<<C++标准程序库>>读书笔记--STL算法
时间:2010-10-08 来源:linyilong
for_each():
for_each(InputIterator beg,InputIterator end,UnaryProc op) 对区间每一个元素调用op(elem);
for_each(vec.begin(),vec.end(),Addvalue<int>(10));
//Addvalue为自己写的仿函数
可以改成:
transform(vec.begin(),vec.end(),vec.begin(),bind2nd(puls<int>(),10));
非变动性算法: count(InputIterator beg,InputIterator end,const T &value); count_if(InputIterator beg,InputIterator end,const T &value,UnaryPredicate op); count返回区间元素值等于value的元素个数 count_if返回区间元素op(elem)为true的个数 示例: num=count(vec.begin(),vec.end(),4);//返回vec内4的个数 num=count_if(vec.begin().vec.end(),bind2nd(greater<int>(),4));//返回vec内大于4的个数
min_element(InputIterator beg,InputIterator end);
min_element(InputIterator beg,InputIterator end,CompFunc op);max_element(InputIterator beg,InputIterator end);max_element(InputIterator beg,InputIterator end,CompFunc op);
返回区间最小/最大的元素无op的版本,以operator<进行元素比较op用来比较两个元素op(elem1,elem2);如果存在多个最大/最小,返回第一个最大/最小值
bool absLess(int elem1,int elem2){ return abs(elem1)<abs(elem2);
}
cout<<*min_element(vec.begin(),vec.end())<<endl;cout<<*min_element(vec.begin(),vec.end(),absLess)<<endl;
搜寻算法:
find(beg,end,const T& value);
find_if(beg,end,const T &value,op);
第一个返回元素值等于value的位置
第二个返回op(elem)为true的位置
search_n(begin,end,size count,const T &value);
search_n(begin,end,size count,const T &value,op);
第一个返回连续count个值为value的位置
第二个返回连续count个op(elem)为true的位置
如果没有找到,都返回end
相关阅读 更多 +