目前主要介绍我所接触到的C++11中新增的算法
判断:谓词
C++11新增了三个用于判断的算法all_of
,any_of
,none_of
all_of
1 | template< class InputIt, class UnaryPredicate > |
检查区间[first, last)中是否所有的元素都满足一元判断式p,所有的元素都满足条件返回true,否则返回false
any_of
1 | template< class InputIt, class UnaryPredicate > |
检查区间[first, last)中是否至少有一个元素都满足一元判断式p,只要有一个元素满足条件就返回true,否则返回true
none_of
1 | template< class InputIt, class UnaryPredicate > |
检查区间[first, last)中是否所有的元素都不满足一元判断式p,所有的元素都不满足条件返回true,否则返回false
实例
1 |
|
查找
find_if_not
含义与find_if
相反,查找不符合某个条件的元素
find_if
也可以实现相同的功能,但是借助find_if_not
,就不必再写否定的判断式了,也提升了可读性
1 |
|
输出:
1 | the first even is 4 |
copy_if
代码中缩减vector值得学习一下
实际上是对每一个元素应用一个谓词
1 |
|
有序序列:iota
用于生成有序序列,比如我们需要一个定长数组,数组中的元素都是在某一个数值的基础之上递增的
1 |
|
相比遍历赋值更简洁,需要注意iota
初始化的序列需要指定大小
max&min
获取最大值和最小值可以分别使用max_element
和max_element
算法
算法库新增了minmax_element
用于同时获取最大值和最小值,将两者的迭代器放到一个pair
中返回
1 |
|
判断:排序
is_sort
用于判断某个序列是否是排好序的
is_sort_until
则用于返回序列中前面已经排好序的部分序列
1 |
|