【笔记】STL的七种武器(三)算法
STL中算法大致分为四类:
1、非可变序列算法:
指不直接修改其所操作的容器内容的算法。
2、可变序列算法:
指可以修改它们所操作的容器内容的算法。
3、排序算法:
包括对序列进行排序和合并的算法、搜索算法以及有序序列上的集合操作。
4、数值算法:
对容器内容进行数值计算
1.sort()
sort(a+0,a+100);或 sort(a+0,a+100,cmp); 默认的排序方式 是升序。
sort(v.begin(), v.end(), less <int > ( ) );//升
sort(v.begin(), v.end(), greater <int > ());//降
2.lower_bound() / upper_bound()
操作对象 可以是vector、set以及map,前提是待查找序列是一个非降序列。
Priority_queue并不是有序容器,无法使用。
int a[]={0,1,2,2,3};
printf("%d\n",lower_bound(a,a+5,2,cmp)-a);
printf("%d\n",upper_bound(a,a+5,2,cmp)-a);
结果:2 4
参数:起始地址,结尾地址,左闭右开。二分查找的数值
3.next_permutation / prev_permutation
4.random_shuffle(a+1,a+n+1)
对一个元素序列进行重新排序。 主要功能:随机化程序、生成数据。