STL非变易算法

非变易算法:原则上不会变更操作数据的算法。

[1]    for_each:逐个容器元素,原型for_each(InputIter first, InputIter last, Function f)。

[2]    find:顺序查找容器元素,原型InputIter find(InputIter first, InputIter last, constT &val, input_iterator_tag)。

[3]    find_if:条件查找容器,原型InputIter find_if(InputIter first, InputIter last,Predicate pred, input_iterator_tag)。

如查找首个能被5整除的元素。

[4]    adjacent_find:邻近查找容器元素,用于查找相等或满足条件的邻近元素。如查找邻近元素奇偶性同样的元素。

[5]    find_first_of:范围查找容器元素。

[6]    count:统计等于某值的容器元素容器个数。

[7]    count_if:条件统计容器元素个数,统计迭代器区间上满足条件的元素个数。如统计年龄在20~30之间的学生个数。

[8]    mismatch:元素不匹配查找,逐一比較找出两个序列的首个不匹配元素的位置。

返回值为pair对。

[9]    equal:元素相等推断,逐一比較两个序列的元素是否相等(或是否满足推断条件)。

比如推断两个vector容器的元素绝对值是否相等。

[10] search:子序列搜索。用于在一个序列中搜索与还有一个序列匹配的子序列(或满足二元谓词推断条件)。实现:利用find函数查找第一个同样元素,接着比較其他元素是否同样。

[11] search_n:反复元素子序列搜索。用于搜索序列中是否有一系列元素值均为某个给定值的子序列(或满足谓词推断条件)。实现:利用find函数查找第一个同样元素,接着看同样元素个数是否等于count。

[12] find_end:最后一个子序列搜索,用于在一个序列中搜索出最后一个与还有一个序列匹配的子序列。实现:调用search算法找到满足条件的子序列,然后推断出其后再没有匹配的子序列,即为最后一个匹配的子序列。

原文地址:https://www.cnblogs.com/clnchanpin/p/7141493.html