使用:
#include <algorithm>
using namespace std;
max(), min(), abs()
//返回最大值或最小值
max(x,y);
min(x,y);
//返回3个中最大值
max(x,max(y,z));
//返回绝对值
abs(x); //x为整数
//浮点数可以用fabs()
swap()
//交换x和y的值
int x=1,y=2;
swap(x,y); //2 1
reverse()
//将数组指针/迭代器在[it,it2)间对元素反转
int a[10];
reverse(a,a+4); //将a[0]~a[3]反转
string str;
reverse(str.begin()+2,str.begin()+6); //对于str[2]~str[5]反转
next_permutation()
//给出一个序列在全排列中的下一个序列
//例n==3的全排列为
//123
//132
//213
//231
//312
//321
//则231的下一个序列为312
//下面给一个例子
int a[10] = {1,2,3};
do{
printf("%d%d%d\n",a[0],a[1],a[2]);
}while(next_permutation(a,a+3));
//到达321的时候会返回false,跳出循环
fill()
//把数组或容器中某段区间赋为相同值
int a[5];
fill(a,a+5,233); //将a[0]~a[4]赋值为233
sort()
sort(首元素地址,尾元素地址的下一个地址,比较函数(选填));
//对int double char皆可排序
//一般用法
sort(a,a+3);
//建立排序规则cmp
//1. 对于int double char
bool cmp(int a,int b){
retirn a>b; //从大到小排序
}
//2. 对于结构体
bool cmp(node a,node b){
//按照x从大到小
//return a.x > b.x;
//按照x从大到小,再按照y从小到大
if(a.x != b.x) return a.x > b.x;
else return a.y < b.y;
}
sort(node,node+maxn,cmp);
//3. 对于容器(vector, string, deque)
lower_bound(), upper_bound()
//lower_bound(first,last,val) 寻找数组或容器[first,last)范围第一个值“大于等于”val的元素位置。是数组则返回指针;是容器则返回迭代器
//upper_bound(first,last,val) 寻找数组或容器[first,last)范围第一个值“大于”val的元素位置。是数组则返回指针;是容器则返回迭代器
//如果没有找到,则返回可以插入钙元素位置的指针或迭代器
//例子
int a[10];
int* lowerPos = lower_bound(a,a+10,-1); //返回数组指针
printf("%d",lowerPos-a); //返回元素的下标