algorithm 是处理一定范围的数据,是为数组和容器指定的;
不修改序列:
1.for_each(begin,end,myfunction),堆一定范围内的所有元素进行一个操作,
相当于
for(auto it=begin;it!=end;it++) { function(*it); }
2.find(fpos,lastpos,target)//返回一个迭代器,指针,如果没有就是lastpos
也适用于容器,和单独类的下标不同,string.find()返回的是第一次出现的索引下标;
3.count (fpos,latpos,target) 返回的是出现的次数没有返回0,只能寻找一个个单独的对像,不能寻找局部,例如查找子窜;
修改序列:
1.reverse(begin,end);
2.rotate(旋转)
3.stabe_partition()维持原有的相对顺序;
4.sort
1.sort(begin,end,cmp比较器);传入一个对象也行,重载括号
2.stable_sort()//默认升序,比较结果相同的值保持他们的相对顺序;
3.nth_element(begin,要定位的第n个元素的地址,end);
4.binary_search(begin,end,target)二分查找,目标有序;存在返回地址,不存在返回最后一个
5.upper_bound(begin,end,20)第一个比20大的数的指针
6.lower_bound(大于等于目标值的最大数)都是上升序列的规则;
next_permutation()在这个范围内的元素重拍到更加大的一个字典序排列,初始状态有序;