STL中的算法

来源:互联网 发布:无人机数据 软件 编辑:程序博客网 时间:2024/05/10 13:15

1、for_each(Iterator begin,Iterator end,proc op)
方便处理每一个元素
eg:

void print(int item){cout<<elem<<endl;}vector<int>l;Fillvalue(l,1,10);for_each(l.begin(),l.end(),print)

2、count(Iterator begin,Iterator end)
count(Iterator begin,Iterator end,judge op)
第二个,当op为真时,计数。
eg:

 bool iseven(int a){if(a%2==0)return 1;return 0;}vector<int>l;Fillvalue(l,1,10);count(l.begin(),l.end(),iseven)//对数列中为偶数的数进行计数

3、Iterator min_element(Iterator begin,Iterator end)
Iterator min_element(Iterator begin,Iterator end,judge op)(or max_element)
以op或者默认手段寻求最大值(注意返回的是迭代器)

cout<<*max_element(l.begin(),l.end(),compare)<<ednl;

4、搜寻算法
(1)返回第一个元素迭代器
Iterator find(begin,end,value)
find (begin,end,judge)//返回第一个使judge为真的数值的迭代器
(2)搜寻前N个连续匹配值
Iterator search_n(begin,end,n,value)
Iterator search_n(begin,end,n,value,op)
eg:

vector<int>::iterator pos;pos=searh_n(l.begin(),l.end(),4,3,greater<int>())//4个连续大于3的位置的起始

(3)搜寻一个子区间
Iterator search(a.begin,a.end,b.begin,b.end)
Iterator search(a.begin,a.end,b.begin,b.end,op)
第二个意为在a区间内需找子区间b,在op为真时被执行
(4)搜寻连续两个相等的元素
Iterator adjacent_find(first,end,op)
5、swap_ranges(a.first,a.last,b.first)
a容器内的[first,second]中的数据与b中以first为起始的数据段交换
6、replace_if(begin(),end(),op,val)
replace(b,e,old,new)
7、排列
bool next_permutation(l.begin(),l.end());
8、排序
sort()
stable_sort()
nth_element(first,n,last,compare)(对指定区域排序,使在第N个位置上的数不变,其前面位置的数都小于或等于它,在开发人员只需要n个最大或者最小的数,且不要求这些数是依序的,这时可用)
9、堆(Heap)操作
make_heap(first,last,cmp)//将[first,last]中的元素转化为堆。
push_heap(first,last)
pop_heap(first,last)
sort_heap(beg,ebd,cmp)//将堆转化为一个序列,此时不为堆。
10、移除
remove_if()
11、合并

0 0
原创粉丝点击