`

STL algorithm

阅读更多

STL algorithm 简介

accumlateiterator对标志的序列中的元素之和,加到一个由init指定的初始值上。重载的版本不再做加法,而是传进来的二元操作符被应用到元素上。
adjacent_different
:创建一个新序列,该序列的每个新值都代表了当前元素与上一个元素的差。重载版本用指定的二元操作计算相邻元素的差。
adjacent_find
:在iterator对标志的元素范围内,查找一对相邻的重复元素,如果找到返回一个ForwardIterator,指向这对元素的第一个元素。否则返回last。重载版本使用输入的二元操作符代替相等的判断。
binary_search
:在有序序列中查找value,如果找到返回true。重载的版本使用指定的比较函数对象或者函数指针来判断相等。
copy
:复制序列。
copy_backward
:除了元素以相反的顺序被拷贝外,别的和copy相同。
count
:利用等于操作符,把标志范围类的元素与输入的值进行比较,并返回相等元素的个数。
count_if
:对于标志范围类的元素,应用输入的操作符,并返回结果为true的次数。
equal
:如果两个序列在范围内的元素都相等,则equal返回true。重载版本使用输入的操作符代替了默认的等于操作符。
equal_range
:返回一对iterator,第一个iterator表示由lower_bound返回的iterator,第二个表示由upper_bound返回的iterator值。
fill
:将输入的值的拷贝赋给范围内的每个元素。
fill_n
:将输入的值赋值给firstfrist+n范围内的元素。
find
:利用底层元素的等于操作符,对范围内的元素与输入的值进行比较。当匹配时,结束搜索,返回该元素的一个InputIterator
find_if
:使用输入的函数替代了等于操作符执行了find
find_end
:在范围内查找“由输入的另外一个iterator对标志的第二个序列”的最后一次出现。重载版本中使用了用户输入的操作符替代等于操作。
find_first_of
:在范围内查找“由输入的另外一个iterator对标志的第二个序列”中的任意一个元素的第一次出现。重载版本中使用了用户自定义的操作符。
for_each
:依次对范围内的所有元素执行输入的函数。
generate
:通过对输入的函数gen的连续调用来填充指定的范围。
generate_n
:填充n个元素。
includes
:判断[first1, last1)的一个元素是否被包含在另外一个序列中。使用底层元素的<=操作符,重载版本使用用户输入的函数。
inner_product
:对两个序列做内积(对应的元素相乘,再求和),并将内积加到一个输入的的初始值上。重载版本使用了用户定义的操作。
inner_merge
:合并两个排过序的连续序列,结果序列覆盖了两端范围,重载版本使用输入的操作进行排序。
iter_swap
:交换两个ForwardIterator的值。
lexicographical_compare
:比较两个序列。重载版本使用了用户自定义的比较操作。
lower_bound
:返回一个iterator,它指向在范围内的有序序列中可以插入指定值而不破坏容器顺序的第一个位置。重载函数使用了自定义的比较操作。
max
:返回两个元素中的较大的一个,重载版本使用了自定义的比较操作。
max_element
:返回一个iterator,指出序列中最大的元素。重载版本使用自定义的比较操作。
min
:两个元素中的较小者。重载版本使用自定义的比较操作。
min_element
:类似与max_element,不过返回最小的元素。
merge
:合并两个有序序列,并存放到另外一个序列中。重载版本使用自定义的比较。
mismatch
:并行的比较两个序列,指出第一个不匹配的位置,它返回一对iterator,标志第一个不匹配的元素位置。如果都匹配,返回每个容器的last。重载版本使用自定义的比较操作。
next_permutation
:取出当前范围内的排列,并将其重新排序为下一个排列。重载版本使用自定义的比较操作。
nth_element
:将范围内的序列重新排序,使所有小于第n个元素的元素都出现在它前面,而大于它的都出现在后面,重载版本使用了自定义的比较操作。
partial_sort
:对整个序列做部分排序,被排序元素的个数正好可以被放到范围内。重载版本使用自定义的比较操作。
partial_sort_copy
:与partial_sort相同,除了将经过排序的序列复制到另外一个容器。
partial_sum
:创建一个新的元素序列,其中每个元素的值代表了范围内该位置之前所有元素之和。重载版本使用了自定义操作替代加法。
partition
:对范围内元素重新排序,使用输入的函数,把计算结果为true的元素都放在结果为false的元素之前。
prev_permutation
:取出范围内的序列并将它重新排序为上一个序列。如果不存在上一个序列则返回false。重载版本使用自定义的比较操作。
random_shuffle
:对范围内的元素随机调整次序。重载版本输入一个随机数产生操作。
remove
:删除在范围内的所有等于指定的元素,注意,该函数并不真正删除元素。内置数组不适合使用removeremove_if函数。
remove_copy
:将所有不匹配的元素都复制到一个指定容器,返回的OutputIterator指向被拷贝的末元素的下一个位置。
remove_if
:删除所有范围内输入操作结果为true的元素。
remove_copy_if
:将所有不匹配的元素拷贝到一个指定容器。
replace
:将范围内的所有等于old_value的元素都用new_value替代。
replace_copy
:与replace类似,不过将结果写入另外一个容器。
replace_if
:将范围内的所有操作结果为true的元素用新值替代。
replace_copy_if
:类似与replace_if,不过将结果写入另外一个容器。
reverse
:将范围内元素重新按反序排列。
reverse_copy
:类似与reverse,不过将结果写入另外一个容器。
rotate
:将范围内的元素移到容器末尾,由middle指向的元素成为容器第一个元素。
rotate_copy
:类似与rotate,不过将结果写入另外一个容器。
search
:给出了两个范围,返回一个iterator,指向在范围内第一次出现子序列的位置。重载版本使用自定义的比较操作。
search_n
:在范围内查找value出现n次的子序列。重载版本使用自定义的比较操作。
set_difference
:构造一个排过序的序列,其中的元素出现在第一个序列中,但是不包含在第二个序列中。重载版本使用自定义的比较操作。
set_intersection
:构造一个排过序的序列,其中的元素在两个序列中都存在。重载版本使用自定义的比较操作。
set_symmetric_difference
:构造一个排过序的序列,其中的元素在第一个序列中出现,但是不出现在第二个序列中。重载版本使用自定义的比较操作。
set_union
:构造一个排过序的序列,它包含两个序列中的所有的不重复元素。重载版本使用自定义的比较操作。
sort
:以升序重新排列范围内的元素,重载版本使用了自定义的比较操作。
stable_partition
:与partition类似,不过它不保证保留容器中的相对顺序。
stable_sort
:类似与sort,不过保留相等元素之间的顺序关系。
swap
:交换存储在两个对象中的值。
swap_range
:将在范围内的元素与另外一个序列的元素值进行交换。
transform
:将输入的操作作用在范围内的每个元素上,并产生一个新的序列。重载版本将操作作用在一对元素上,另外一个元素来自输入的另外一个序列。结果输出到指定的容器。
unique
:清除序列中重复的元素,和remove类似,它也不能真正的删除元素。重载版本使用了自定义的操作。
unique_copy
类似与unique,不过它把结果输出到另外一个容器。
upper_bound
:返回一个iterator,它指向在范围内的有序序列中插入value而不破坏容器顺序的最后一个位置,该位置标志了一个大于value的值。重载版本使用了输入的比较操作。
堆算法:C++标准库提供的是max-heap。一共由以下4个泛型堆算法。
make_heap
:把范围内的元素生成一个堆。重载版本使用自定义的比较操作。
pop_heap
:并不是真正的把最大元素从堆中弹出,而是重新排序堆。它把firstlast-1交换,然后重新做成一个堆。可以使用容器的back来访问被“弹出“的元素或者使用pop_back来真正的删除。重载版本使用自定义的比较操作。
push_heap
:假设firstlast-1是一个有效的堆,要被加入堆的元素在位置last-1,重新生成堆。在指向该函数前,必须先把元素插入容器后。重载版本使用指定的比较。
sort_heap
:对范围内的序列重新排序,它假设该序列是个有序的堆。重载版本使用自定义的比较操作
<!-- <div class="more"><a href="/post.1630122.html">...</a></div> -->
分享到:
评论

相关推荐

    STL的algorithm的实现

    自己根据编程原本与使用C++的经历写的STL的algorithm的实现,不好的地方请指出

    STL使用_Vector排序

    在`STLalgorithm.cpp`文件中,开发者可能会实现以下步骤: 1. **声明和初始化vector**:首先,他们会声明一个`vector`实例,然后向其中填充需要排序的元素。这可以通过直接赋值、构造函数或`push_back`等方法完成。...

    STL_map_algorithm.ppt

    stl map algorithm ppt 精品课件

    STL中algorithm部分函数的用法例子

    ### STL中的Algorithm库函数详解:排序相关操作 在C++标准模板库(STL)中,`algorithm`头文件提供了一系列非常实用的算法函数,其中包括排序、查找、转换等操作。本文将详细介绍`algorithm`库中关于排序的部分函数,...

    algorithm C++ STL

    algorithm C++ STL

    刷leetcode不用stl-algorithm:常规算法题记录

    刷leetcode不用stl algorithm 记录常规算法题 十大排序 新增 leetcode 练习笔记 正常人刷 200 道即可 算法题中常遇到的问题 递归,防止死循环和内存泄露。由于递归需要堆栈,所以内存消耗要比非递归代码要大很多。...

    C++ STL --map and algorithm

    C++ STL--map 和 algorithm C++ STL 中的 map 和 algorithm 是两种非常重要的组件,map 是一种关联式容器,能帮助我们建立一一对应的关系,而 algorithm 则提供了一些常用的算法来处理数据。 Map 简介 map 是一种...

    STL入门 STL入门 STL入门 STL入门 STL入门 STL入门

    3. **算法(Algorithm)**:STL提供了一系列的算法,如排序、查找、拷贝等,这些算法可以作用于不同的容器,通过迭代器来访问元素,实现了数据处理的通用性。 4. **仿函数(Function object)**:也称为函数对象,它是...

    229jxxaakkooqq_C++_

    "C++ Magicians STL Algorithm. Last"这个标题暗示了我们将深入探讨C++ STL中的算法,特别是关于排序、搜索、变换等高级操作。STL算法是C++中一组高度优化的函数模板,可以极大地提高代码的可读性和效率。 首先,...

    C++ STL程序员面试题

    - algorithm库中的常用算法,如binary_search、lower_bound、upper_bound用于有序容器的搜索。 3. **STL面试题.doc** 面试题可能包含各种实践问题,比如: - 如何使用STL实现高效的字符串反转? - 如何在不复制...

    stl速成 基本的stl操作

    例如,#include 、#include 和#include &lt;algorithm&gt;。 名字空间: 名字空间就好像一个信封,将标志符封装在另一个名字中,避免了和其他标志符冲突。例如,STL的sort()算法封装在名字空间std中,使用std::sort()...

    STL标准库函数(形式及用法)

    STL中的库函数可以分为几大类:容器(Container)、算法(Algorithm)和迭代器(Iterator)。 容器(Container) 容器是STL中的一种基本数据结构,用于存储和管理数据。常用的容器有: * vector&lt;T&gt;:大小可变的...

    用于在文件夹里预览stl文件的工具

    在K-Studio-Demo的实现中,可能使用了C++ STL库中的`fstream`类来读取STL文件,`vector`来存储3D模型的顶点和面数据,还有可能使用了`algorithm`头文件中的函数进行数据处理。同时,为了实现预览功能,可能还涉及到...

    ACM STL常用 的模板

    STL 大致可以分为三大类:算法(algorithm)、容器(container)、迭代器(iterator)。STL 容器是一些模板类,提供了多种组织数据的常用方法,例如 vector(向量,类似于数组)、list(列表,类似于链表)、deque...

    c++stl库头文件及其源码

    - **&lt;stl_algorithm.h&gt;**:包含了各种算法,如排序、查找、变换等,用于操作容器中的元素。 - **&lt;stl_iterator.h&gt;**:定义了各种迭代器,它们是访问容器元素的主要方式。 STL的源码通常会封装在编译器提供的库中,...

    c++ STL set_difference set_intersection set_union 操作

    以下是STL algorithm的几个函数,使用的条件是有序容器,所以 vector在被sort了之后是可以使用的,set也是可以使用的。 set_difference 这个是求得在第一个容器中有,第二个容器中没有的。set_intersection 求两个...

    [原创]自己工作中常用的模板库,简化你的工作

    sometimes STL algorithm is not good and it needs one traival function object(third parameter) , althrough std::bind/boost::lambda is available, but for some nest case, it is very hard to be used....

    STL入门,STL基本知识,核心东西

    STL,全称为Standard Template Library,是C++标准库的核心组成部分,主要利用模板(Template)机制实现了泛型编程。它的引入极大地提升了C++语言的灵活性和可复用性,允许程序员编写不依赖于具体数据类型的高效算法...

    STL入门 STL的概念与组成

    STL,全称为Standard Template Library,是C++标准库的核心组成部分,主要由五大核心概念组成:迭代器(Iterator)、容器(Container)、算法(Algorithm)、适配器(Adaptors)和空间配置器(Allocator)。...

Global site tag (gtag.js) - Google Analytics