标准模板库:算法

标头<algorithm>定义了一系列特别设计用于元素范围的函数。

范围是可以通过迭代器或指针访问的任何对象序列,例如数组或某些STL容器的实例。但请注意,算法直接通过迭代器对值进行操作,不会以任何方式影响任何可能容器的结构(它永远不会影响容器的大小或存储分配)。

std::adjacent_find 在范围内找到相等的相邻元素。
std :: all_of:测试范围内所有元素的条件,any_of(开始,结束,条件函数(fn)),在[ 开始,结束)这个区间, 判断是否有一个元素满足 fn。
std :: any_of:测试范围内的任何元素是否满足条件,all_of(开始,结束,函数fn),在[开始,结束)这个所有元素都满足fn 则返回ture,否则返回false。
std::binary_search:测试值是否按排序顺序存在,返回true范围中的任何元素[first,last)是否等于val,false否则返回。
std :: copy:将范围中的元素复制[first,last)到从结果开始的范围内。
std :: copy_backward:向后复制元素范围,拷贝该范围中的元件[first,last)从端部到在范围终端起始结果。
std :: copy_if:复制范围的某些元素,[first,last)将pred返回true的范围内 的元素复制到从结果开始的范围。
std :: copy_n:复制元素,将从第一个开始的范围中 的前n个元素复制到从结果开始的范围。 该函数将迭代器返回到目标范围的末尾(指向复制的最后一个元素之后的一个)。 如果n为负数,则该函数不执行任何操作。
std :: count:计算范围内的值的外观,返回[first,last)比较等于val的范围内的元素数。
std :: count_if:返回满足条件的范围内的元素数,返回值的范围的元素数[first,last)为哪些预解码值是真实的。
std::equal:测试两个范围内的元素是否相等,将范围中的元素[first1,last1)与从first2开始的范围中的元素进行比较,并true在两个范围中的所有元素都匹配时返回。
std :: equal_range:得到相等元素的子范围返回包含范围的所有元素的子范围的边界,其[first,last)值等于val。
std :: fill:填充范围与值,将val分配给范围中的所有元素[first,last)。
std :: fill_n:用值填充序列,将val分配给第一个指向的序列的前n个元素。
std :: find:查找范围内的值,返回[first,last)比较等于val的范围中的第一个元素的迭代器。如果找不到这样的元素,则该函数最后返回。
std :: find_end:查找范围中的最后一个子序列,搜索[first1,last1)定义的序列的最后一次出现的范围[first2,last2),并将迭代器返回到其第一个元素,如果没有找到,则返回last1。
std :: find_first_of:从范围内的集合中查找元素,返回范围[first1,last1)中与第一个元素匹配的第一个元素的迭代器[first2,last2)。如果找不到这样的元素,则该函数返回last1。
std :: find_if:查找范围内的元素,返回到[first,last]范围内第一个元素的迭代器,其中pred返回true。 如果找不到这样的元素,则该函数最后返回。
std::find_if_not:查找范围内的元素(负面条件),返回到[first,last]范围内第一个元素的迭代器,pred返回false。 如果找不到这样的元素,则该函数最后返回。

std :: for_each:将功能应用于范围,将函数fn应用于[first,last]范围内的每个元素。
std :: generate:使用函数生成范围的值,将对gen的连续调用返回的值分配给[first,last]范围内的元素。
std :: generate_n:使用函数生成序列的值,将对gen的连续调用返回的值分配给第一个指向的序列的前n个元素。
std :: includes:测试排序范围是否包括另一个排序范围,如果排序范围[first1,last1)包含排序范围中的所有元素,则返回true [first2,last2)。
std :: inplace_merge:合并连续排序的范围,合并两个连续的有序区间:[first,middle)和[middle,last),把结果放入将合并排序的范围[first,last)。
std :: is_heap:测试范围是否为堆,true如果范围[first,last)形成堆,则 返回,就像使用make_heap。
std :: is_heap_until:查找不按堆顺序排列的第一个元素,[first,last)如果范围被视为堆(如同构造一样),则返回范围中第一个元素的迭代器,该元素不在有效位置make_heap,返回的first和迭代器)
std :: is_partitioned:测试范围是否已分区,返回true如果在范围内的所有元素[first,last)为其预计值收益true先于那些将其返回false。
std :: is_permutation:测试范围是否是另一个的排列,将范围中的元素[first1,last1)与first2开始范围内的元素进行比较,并返回true两个范围中的所有元素是否匹配,即使顺序不同。
std :: is_sorted:检查范围是否已排序,true如果范围[first,last)按升序排序,则返回。
std :: is_sorted_until:在范围内查找第一个未排序的元素,返回范围中第一个元素的迭代器,该元素[first,last)不遵循升序。返回的first和迭代器。
std :: iter_swap:两个迭代器指向的对象的交换值,交换a和b指向的元素。
std :: lexicographical_compare:字典小于比较,如果范围[first1,last1]按字典顺序比较范围[first2,last2],则返回true。
std :: lower_bound:将迭代器返回到下限,返回指向范围中第一个元素的迭代器,该元素[first,last)不比val小。
std :: make_heap:从范围创建堆,重新排列范围[first,last)中的元素,使它们形成堆。
std :: max:返回最大的,返回a和b中的最大值。
std :: max_element:返回范围内的最大元素,返回指向范围中具有最大值的元素的迭代器[first,last)。
std :: merge:合并已排序的范围,结合的元素在排序的区间[first1,last1)和[first2,last2),进入一个新的开始范围在结果与它的所有元素进行排序。
std :: min:返回最小的,返回a和b中的最小值。
std :: minmax:返回最小和最大的元素。
std :: minmax_element:返回范围内的最小和最大元素,返回一个对迭代器指向范围中具有最小值的元素[first,last)作为第一个元素,最大值作为第二个元素。
std :: min_element:返回范围内的最小元素,返回指向范围中具有最小值的元素的迭代器[first,last)。
std :: mismatch:返回两个范围不同的第一个位置,在范围进行比较的元素[first1,last1)与在范围内的开始first2,并返回该不匹配两个序列的第一个元素。
std :: move_backward:向后移动元素范围,将结束时从[end,last]开始的元素移动到结束时终止的范围内。
std :: next_permutation:将范围转换为下一个排列,将范围中的元素重新排列[first,last)为下一个按字典顺序排列的更大排列。
std :: none_of:测试没有元素满足条件,如果pred对范围[first,last]中的所有元素返回false或者范围为空,则返回true,否则返回false。
std::nth_element:排序范围内的元素,重新排列[first,last]范围内的元素,使得第n个位置的元素是在排序序列中处于该位置的元素。
std::partial_sort:对范围内的元素进行部分排序,重新排列[first,last]范围内的元素,使得中间的元素是整个范围中的最小元素,并按升序排序,而其余元素没有任何特定顺序。
std::partial_sort_copy:复制和部分排序范围,拷贝的最小元素的范围内[first,last),以[result_first,result_last)分选复制的元素。复制的元素的数目是一样的距离之间result_first和result_last(除非这比元素的量多[first,last))。
std :: partition:分区范围分为两部分,重新排列范围[first,last)中的元素,使得pred返回的true所有元素都返回到它返回的所有元素之前false。迭代器返回指向第二组的第一个元素。
std :: partition_copy:分区范围分为两部分,[first,last)将pred返回 的范围内的元素复制true到result_true指向的范围内,将那些元素中的元素复制到result_false指向的范围内。
std :: partition_point:获取分区点,返回分区范围中第一个元素的迭代器[first,last),其中pred不是true,表示其分区点。
std :: pop_heap:来自堆范围的Pop元素,重新排列堆范围[first,last)中的元素,使得被视为堆的部分缩短为1:具有最高值的元素被移动到(last-1)。
std :: prev_permutation:将范围转换为先前的排列,重新排列该范围中的元件[first,last)插入前一字典顺序 -ordered置换。
std :: push_heap:将元素推入堆范围,给定范围内的堆[first,last-1),此函数[first,last)通过将值(last-1)放入其中的相应位置来扩展被视为堆的范围。
std :: random_shuffle:随机重新排列范围内的元素,[first,last)随机 重新排列范围内的元素。
std :: remove:从范围中删除值。
std :: remove_copy:复制范围删除值,将范围中的元素复制[first,last)到从结果开始的范围,除了那些比较等于val的元素。
std :: remove_copy_if:复制范围删除值,将范围中的元素复制[first,last)到从结果开始的范围,但pred返回的元素除外true。
std :: remove_if:从范围中删除元素,将范围[first,last)转换为一个范围,其中包含删除了pred返回的所有元素true,并将迭代器返回到该范围的新结尾。

std :: replace:替换范围内的值,将new_value分配给范围内[first,last)比较等于old_value的所有元素。
std :: replace_copy:复制范围替换值,拷贝该范围中的元素[first,last)到范围开始于结果,替换的外观OLD_VALUE通过NEW_VALUE。
std :: replace_copy_if:复制范围替换值,拷贝该范围中的元素[first,last)到范围开始于结果,替换那些针对预解码值的回报true由NEW_VALUE。
std :: replace_if:替换范围中的值,分配NEW_VALUE于该范围内的所有元素[第一,最后一个)针对预解码值的回报true。
std :: reverse:反向范围,反转范围中元素的顺序[first,last)。
std :: reverse_copy:复制范围反转,将范围中的元素复制[first,last)到从结果开始的范围,但顺序相反。
std :: rotate:向左旋转范围内的元素,旋转范围中元素的顺序,使中间[first,last)指向的元素成为新的第一个元素。 
std :: rotate_copy:复制范围向左旋转,将范围中的元素复制[first,last)到从结果开始的范围,但是以中间指向的元素成为结果范围中的第一个元素的方式旋转元素的顺序。
std :: search:子序列的搜索范围,搜索由[first1,last1)第一次出现的序列定义的范围[first2,last2),并将迭代器返回到其第一个元素,如果没有找到,则返回last1。
std :: search_n:搜索元素的范围,在范围内搜索计数元素[first,last)序列,每个计数元素都等于val(或者pred返回true)。
std :: set_difference:两个排序范围的差异。
std :: set_intersection:两个排序范围的交点。
std :: set_symmetric_difference:两个排序范围的对称差异。
std :: set_union:联合两个排序范围,构造一个从result指向的位置开始的排序范围,以及两个排序范围的集合[first1,last1)和[first2,last2)。
std :: shuffle:使用生成器随机重新排列范围内的元素,[first,last)使用g作为均匀随机数生成器,随机 重新排列范围内的元素。
std :: sort:排序范围内的元素,将范围中的元素[first,last)按升序排序。
std :: sort_heap:排序堆的元素,将堆范围中的元素[first,last)按升序排序。
std :: stable_partition:分区范围为两个 - 稳定排序,重新排列范围[first,last)中的元素,使得pred返回的true所有元素都返回到它返回的所有元素之前false,并且与函数不同划分,保留每个组内元素的相对顺序。
std :: stable_sort:排序元素保留等价的顺序,将范围中的元素[first,last)按升序排序,如sort,但stable_sort保留具有等效值的元素的相对顺序。
std :: swap:交换两个对象的值。
std :: swap_ranges:交换两个范围的值,将范围中每个元素的值[first1,last1)与从first2开始的范围中的各个元素的值进行交换。
std :: transform:变换范围,将操作按顺序应用于一(1)或两(2)个范围的元素,并将结果存储在从结果开始的范围内。
std :: unique:删除范围内的连续重复项,从范围中的每个连续的等效元素组中删除除第一个元素之外的所有元素[first,last)。
std :: unique_copy:复制范围删除重复项,将范围中的元素复制[first,last)到从结果开始的范围,但连续重复项(比较前面的元素的元素)除外。
std :: upper_bound:将迭代器返回到上限,返回指向范围中第一个元素的迭代器,该元素[first,last)比较大于val。
 

 

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐