可能有用的函数

时间:2021-04-08 19:10:11

<cmath>

double hypot(double x, double y)

求三角形斜边 (hypotenuse) 


<cmath>

double frexp(double x, int &exp)

x分解成尾数和指数,指数存入exp,返回尾数


1..n的圈,循环数d步。

p = (p + d + n - 1) % n +1;(从1到n)

p = (p + d + n) % n;(从0到n - 1)

<cctype>

bool isalpha(char)

bool isdigit(char)

char toupper(char)


<cmath>

double pow(double a, double b) a ^ b

返回double,误差挺大的,比如int t = 2,pow(10,t),不同编译器,有可能返回99.99999,直接赋给int,只得到99。


double round(double x)

将x向最近的整数取整,即四舍五入,然后转化为double。

一定要用pow可以(int)round(pow(10,t))

或者直接循环t次乘10。


double floor(double x)

double ceil(double x)


<algorithm>

int p =lower_bound(a , a + n, x) - a;

在有序数组中, a到a + n中寻找大于等于x的数,返回第一个符合条件的数的地址。

// p就为坐标

// if(a[p] == x)...


vector <int> v;

v.resize(int t) //改变大小,使只保留0 - t-1个元素

v.pop_back() //删除最后一个元素


<cstdlib>

stand(time(NULL));//程序执行开头调用一次即可,不能每次产生随机数时调用。

rand();//随机均匀生成[0,RAND_MAX]中的整数,RAND_MAX至少为32767

若要生成[0,n]中的数,rand() / RAND_MAX * n,四舍五入,若n很大精度稍差。


string s;

s.substr(id,len);//以下标id为开头,长度为len的子串

s.substr(id);//以下标id为开头,一直到末尾的子串

s.find(char c);//返回第一个该字符的下标

if(s.find(char c) !=string::npos) {} //当找得到字符时才进行操作


C++ STL 求向量中的最大值和最小值

min_element(v.begin(),v.end())  返回最小的元素的位置

max_element(v.begin(),v.end()) 

序列 [first, last)。