C++ STL Algorithm
来源:互联网 发布:linux 修改文件名称 编辑:程序博客网 时间:2024/04/28 11:01
1. 复制一个范围的元素 copy()
Copies the elements in the range [first,last) into a range beginning at result.
应用:接收标准输入保存到容器;输出容器内的元素。
copy(istream_iterator<T>(cin), istream_iterator<T>(), back_insert_iterator< vector<int> >(num))
copy(A.begin(), A.end(), ostream_iterator(cout, " "));
2. 从最后的元素开始复制 copy_backward()
http://www.cplusplus.com/reference/algorithm/copy_backward/
Copy range of elements backwards
Copies the elements in the range [first,last) into a range whose last element is result. The function begins by copying *(last-1) into *(result-1), and then follows backwards by the elements preceeding these, until first is reached (and including it).
The behavior of this function template is equivalent to:
3. 容器元素累加 accumulate()
accumulate(numbers,numbers+3,init);
Note: 第3个参数的类型会影响返回的结果,如果作浮点型的运算,第3个参数应该为0.0而不是0。
4. 将函数应用到一个范围内的所有元素 for_each()
Applies function f to each of the elements in the range [first,last):
http://www.cplusplus.com/reference/algorithm/for_each/
The behavior of this template function is equivalent to:
5. 范围内元素替换 replace()
http://www.cplusplus.com/reference/algorithm/replace/
6. 从范围内删除指定值 remove()
http://www.cplusplus.com/reference/algorithm/remove/
从实现来看与erase()不同,通用算法中的remove()也与容器list的成员函数remove()不同,通用算法中的remove()并没有容器中删除东西而是把非指定的值位置提前替换掉指定值占用的位置。
应用函数而不具体指定值来判断要删除的元素 remove_if()
http://www.cplusplus.com/reference/algorithm/remove_if/
7. 统计范围内等于指定值的元素个数 count()
http://www.cplusplus.com/reference/algorithm/count/
统计范围内满足条件的元素个数 count_if()
http://www.cplusplus.com/reference/algorithm/count_if/
8. 查找范围内等于指定值的第一个元素的位置 find()
http://www.cplusplus.com/reference/algorithm/find/
应用函数来查找 find_if()
http://www.cplusplus.com/reference/algorithm/find_if/
9. 查找序列 search()
http://www.cplusplus.com/reference/algorithm/search/
Searches the range [first1,last1) for the first occurrence of the sequence defined by [first2,last2), and returns an iterator to its first element.
10 排序 sort()
11 Function Objects
http://www.cplusplus.com/reference/std/functional/
不以独立的函数加以定义而采用function objects是出于效率的考虑。可以令call运算符成为inline,消除了“通过函数指针来调用函数”的额外开销。
functional objects分为:
1、算术运算(arithmetic)
plus Addition function object class (class template)2、关系(relational)
equal_to Function object class for equality comparison (class template)3、逻辑运算(logical)
logical_and Logical AND function object class (class template)
binder adapter (绑定配接器)
将function object的参数绑定至某个特定值身上,是binary(二元)function object转化为unary(一元)function object。
bind1st将指定值绑定至第一操作数,bind2nd将指定值绑定至第二操作数。
back_inserter() 以容器的push_back()函数取代assignment运算符;
inserter() 以容器的inseter() 函数取代assignment运算符;
front_inserter() 以容器的push_front()函数取代assingment运算符。
mem_fun
将成员函数转为函数对象
例:和transform结合利用string::length获得string数组每个成员长度
http://www.cplusplus.com/reference/std/functional/mem_fun/
ptr_fun
函数指针转函数对象
例:和accumulate结合利用atoi,累加保存为char字符串的数组
http://www.cplusplus.com/reference/std/functional/ptr_fun/
Hash Set
http://www.moosechips.com/2008/10/using-gcc-c-hash-classes-with-strings/
Reference:
list来操作stl中的算法---其他的都相似!
详细解说 STL 排序(Sort)
- C++::STL::algorithm
- [C++] STL (Algorithm,bitset)
- C++STL库之algorithm库
- C++STL之algorithm(一)
- C++STL库之algorithm库
- C++STL库之algorithm库简介
- stl algorithm
- 【STL】algorithm
- STL algorithm
- STL-algorithm
- STL algorithm
- 【STL】algorithm
- STL algorithm
- [C++STL]算法<algorithm>中各种算法解析
- C++:STL常用函数模块总结(算法algorithm)
- [C++STL]算法<algorithm>中各种算法解析
- STL algorithm for_each
- STL algorithm find
- 让vdsp与uclinux共舞(12):应用程序开发
- 转 sp.net 类库中使用ConfigurationManager.ConnectionStrings
- Arcgis MOBILE某些图层无法显示的问题索引
- ActiveX开发心得
- 真机调试TRK导致机器重启问题
- C++ STL Algorithm
- 安居大事即将落成
- Unemployment is not all bad news
- 分页管理机制
- Checkstyle-module配置详解
- 内存DC,CBitmap的问题
- PB中利用字体实现EAN13条形码的打印
- VS2005下发布网站,使用WebDeploymentSetup插件防止乱码
- 读书笔记(十)核心测试过程:计划,准备和完善