abs()
max和min返回两个数x、y中的最大最小值。abs(x)中x必须为整数,浮点数用math头文件下的fabs()。
(2)swap()
swap(x,y)交换x和y的值。
(3)reverse()
reverse(it,it2)可以将数组指针在[it1,it2)之间的元素或容器的迭代器[it1,it2)范围内的元素进行反转。
例如:
int a[10]={10,11,12,13,14,15};
reverse(a,a+4); //将a[0]~a[3} 4个元素反转。
13 12 11 10 14 15
string str =“abcdefghi”
reverse(str.begin()+2,str.begin()+6);
abfedcghi
(4)next_permutation()
next_permutation()给出一个序列在全排列中的下一个序列。
例如:
n=3的全排列为
123 132 213 231 312 321
231的下一个序列为312。
int a[10]={1,2,3};
do{
cout<<a[0]<<a[1]<<a[2]<<” ”;
}while(next_permutation(a,a+3));
输出:123 132 213 231 312 321
(5)fill()
fill()可以把数组或某容器的某一段区间赋为某个相同的值,与memset不同,这里的赋值可以是数组类型对应范围中的任意值。
int a[5];
fill(a,a+5,233);
(6)sort()
sort(a,a+4); //默认递增排序
cmp函数
bool cmp(int a,int b){
return a>b; //从大到小排序 与priority_queue相反。
}
结构体
struct node{
int x;
int y;
}
bool cmp(node a,node b){
if(a.x!=b.x)
return a.x>b.x; //按x从大到小排序 与priority_queue相反。
else
return a.y<b.y; //若x相等,则按y从小到大排序。
}
STL中,只有vector,string,deque是可以用sort的,像set、map容器是用红黑树实现的,元素本身有序,不允许用sort排序。
(7)lower_bound()/upper_bound()
lower_bound(first,last,val)用来寻找在数组或容器中的[first,last)范围内第一个值大于等于val的元素的位置,如果是数组,返回该位置指针;如果是容器,返回该位置的迭代器。
upper_bound(first,last,val)用来寻找数组或容器的[first,last)范围第一个值大于val的元素的位置,如果是数组,返回该位置指针;如果是容器,返回该位置的迭代器。
如果数组或容器中没有寻找到该元素,则lower_bound()和upper_bound()返回可以插入该元素的位置的指针或迭代器。