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算法找到满足条件的子序列,然后判断出其后再没有匹配的子序列,即为最后一个匹配的子序列。

时间: 2024-10-14 12:26:25

STL非变易算法的相关文章

stl非变易算法(二)

这里接着上篇stl非变易算法(一)进行总结.主要解析算法函数count.count_if.mismatch.equal.search.search_n以及find_end,给出算法函数的实现及测试用例.下面直接进入正题. 统计等于某值的容器元素个数count count函数用于计算容器中某个给定值的出现次数.计算迭代区间[first,last)上等于val值的元素个数ret,返回计数. //count算法函数的实现代码 template <class InputIterator, class T

stl非变易算法(一)

C++ STL的非变易算法是一组不破坏操作数据的模板函数,用来对序列数据进行逐个处理.元素查找.子序列搜索.统计和匹配.非变易算法具有极为广泛的适用性,基本上可应用于各种容器. 逐个容器元素for_each C++ STL提供了一个for_each函数,用于对容器的元素进行循环操作.它对迭代区间[first, last)所指的每一个元素,执行由单参函数对象fn所定义的操作.原型如下: template<class InputIterator, class Function> Function

第21章 非变易算法

   第21章 非变易算法     Non-modifying sequence operations   21.0 advance, distance     为了了解模板,先了解一下这两个迭代器操作函数   21.1 逐个容器元素for_each     for_each  Apply function to range (template function)   21.2 查找容器元素find     find  Find value in range (function template

stl变易算法(一)

C++ STL的变易算法是一组能够修改容器元素数据的模板函数,可进行序列容器的复制.交换.替换.填充.移除.旋转等.这些算法对迭代器有较高的要求,具体的迭代器类型随各个算法而定,或向前迭代器.或双向迭代器.又或者是随机迭代器,以提供算法所需要的迭代器操作.应用变易算法时,先要检查容器的迭代器是否符合要求,防止产生编译错误. 元素复制copy C++STL提供一个用于容器间元素拷贝的copy算法,将迭代区间[first,last)的元素复制到由复制目标迭代器result给定的区间[result,r

stl变易算法(二)

本篇接着前篇stl变易算法(一)继续讲述变易算法.主要介绍transform.replace.replace_if.replace_copy以及replace_copy_if的用法及实现代码,并给出测试用例. 元素变换transform transform算法用于实行容器元素的变换操作.如下两个使用原型,一个将迭代器区间[first,last)中元素,执行一元函数对象op操作,变换后的结果存放在[result,result+(last-first))区间中.另一个将迭代器区间[first1,la

stl变易算法(三)

本篇接着前面stl变易算法(一)和stl变易算法(二)继续讲述变易算法. 这里将介绍完余下的变易算法,主要有:填充fill.n次填充fill_n.随机生成元素generate.随机生成n个元素generate_n.移除复制remove_copy.条件移除复制remove_copy_if.移除remove.条件移除remove_if.不连续反复元素复制unique_copy.剔除连续反复元素unique.元素反向reverse.反向复制reverse_copy及旋转rotate .给出算法实现及实

STL中排序算法的选择

 当大多数程序员需要对一组对象进行排序的时候,首先想到的一个算法是sort.sort是一个非常不错的算法,但它也并非在任何场合下都是完美无缺的.有时候我们并不需要一个完全的排序操作.比如说,如果我们有一个存放Widget的矢量,而我们希望将质量最好的20个Widget送给最重要的顾客,按照顾客的重要程度送上不同质量的Widget,那么只需要排序出前20个最好的Widget,其他的Widget可以不用排序.在这种情况下,需要的是一种部分排序的功能,而有一个名为partial_sort的算法正好

C++标准模板库-STL库基本算法

原文链接:http://blog.csdn.net/wangfengwf/article/details/11580989#t9 16.4  STL库基本算法 标准C++STL库中算法组件为一个很重要的组成部分,该组件提供了大多数最常见的通用算法的实现,并且这些实现是经过很多测试试验并被公认在处理上是高效的.将这些最常见的算法通用化实现,最大的优势就是开发者在应用中不需要为具体的常见算法的实现而费神,只需要包含相应的头文件直接使用即可,不仅仅提高的软件开发的效率,同时还有助于软件重用性的提高.

非阻塞算法在并发容器中的实现【转】

转自:https://www.ibm.com/developerworks/cn/java/j-lo-concurrent/ 非阻塞算法在 Java 中的应用越来越广泛 , ConcurrentLinkedQueue 是 java. concurrent 包中基于非阻塞算法实现的并发容器的典范.通过本文,您将了解非阻塞算法的工作原理及其在 ConcurrentLinkedQueue 中的具体实现机制. 简介 非阻塞算法在更细粒度的层面协调争用,它比传统的锁有更高的并发性.随着非阻塞算法在 Jav