前言
有感于对stl中algorithm类别的不甚了解,于是最近几天利用白天或者晚上零碎的时间对stl中的algorithm的东西进行了简单的浏览,测试和归纳。
算法分类
非修改算法
- 序列满足某一条件
all_of
返回bool类型,是否全部满足某一条件
any_of
是否有某一个满足某一条件
none_of
是否任何一个都不满足某一条件 遍历
for_each
对序列中的元素进行某一个操作例如我喜欢用的输出方法: for_each(v1.begin(), v1.end(), [](int x){cout << x << " "; }); cout << endl;
- 查找
find
查找某一个元素
find_if
查找满足某一个条件第一个元素位置
find_if_not
查找不满足条件的第一个元素位置
奇葩的几个
find_end
查找一个序列(参数2)在另一个序列(参数1)中最后出现的位置
find_first_of
查找在一个序列(参数2)某一个元素在另一个序列(参数1)中第一次出现的位置
adjacent_find
查找在一个序列中连续两个元素第一次满足某一个条件的位置 - 统计
count
统计元素个数
count_if
统计满足条件的元素个数 - 比较
mismatch
两个序列第一个不匹配的位置
equal
两个序列是否完全一样 - 序列查找
search
查找一个序列在另一个序列第一次出现的位置(与find_end
对应,也是奇葩)
search_n
查找一个n个val的序列在另一个序列第一次出现的位置
修改序列类
分区partition
排序
二分查找
集合类操作
堆
最大最小元素
排列
内容有空的话,会不断追加
参考文献
- c++程序设计语言之标准库
- http://www.cplusplus.com/reference/algorithm/