STL-算法

1 、不改变操作对象内容的算法

  1.1 线性查找: find; find_if; adjacent_find; find_first_of.

  1.2 子序列匹配: search; find_end; search_n.

  1.3 计算元素个数: count; count_if.

  1.4 遍历元素: for_each.

  1.5 比较两个Ranges: equal; mismatch; lexicographical_compare.

  1.6 最大值与最小值: min; max; min_element; max_element.

 

2、 改变操作对象内容的算法

  2.1 复制区间: copy; copy_backward.

  2.2 互换元素: swap; iter_swap; swap_ranges.

  2.3 transform

  2.4 替换元素: replace; replace_if; replace_copy; replace_if.

  2.5 填充整个区间: fill; fill_n; generate; generate_n.

  2.6 移除元素: remove; remove_if; remove_copy; remove_copy_if; unique; unique_copy.

  2.7 排列算法: reverse; revers_copy; rotate; rotate_copy; next_permutation; prev_permutation.

  2.8 分割: partition; stable_partition.

  2.9 随机重排与抽样: random_shuffle; random_sample; random_sample_n.

  2.10 数值算法: accumulate; inner_product; partial_sum.

 

3 、排序和查找

  3.1 排序: sort; stable_sort; partial_sort; partial_sort_copy; nth_element; is_sorted.

  3.2 二分查找: binary_search; lower_bound; upper_bound; equal_range.

  3.3 合并: merge; inplace_merge.

  3.4 已排序区间的集合操作: includes; set_union; set_intersection; set_difference; set_symmetric_difference.

  3.5 堆操作: make_heap; push_heap; pop_heap; sort_heap; is_heap.

 

 

非修改性序列操作  12 个)

循环

for_each()

对序列中的每个元素执行某操作

查找

find()

在序列中找出某个值的第一次出现的位置

find_if()

在序列中找出符合某谓词的第一个元素

find_end()

在序列中找出一子序列的最后一次出现的位置

find_first_of()

在序列中找出第一次出现指定值集中之值的位置

adjacent_find()

在序列中找出相邻的一对值

计数

count()

在序列中统计某个值出现的次数

count_if()

在序列中统计与某谓词匹配的次数

比较

mismatch()

找出两个序列相异的第一个元素

equal()

两个序列中的对应元素都相同时为真

搜索

search()

在序列中找出一子序列的第一次出现的位置

search_n()

在序列中找出一值的连续 n 次出现的位置


 

修改性序列操作  27 个)

复制

copy()

从序列的第一个元素起进行复制

copy_backward()

从序列的最后一个元素起进行复制

交换

swap()

交换两个元素

swap_ranges()

交换指定范围的元素

iter_swap()

交换由迭代器所指的两个元素

变换

transform()

将某操作应用于指定范围的每个元素

替换

replace()

用一个给定值替换一些值

replace_if()

替换满足谓词的一些元素

replace_copy()

复制序列时用一给定值替换元素

replace_copy_if()

复制序列时替换满足谓词的元素

填充

fill()

用一给定值取代所有元素

fill_n()

用一给定值取代前 n 个元素

生成

generate()

用一操作的结果取代所有元素

generate_n()

用一操作的结果取代前 n 个元素

删除

remove()

删除具有给定值的元素

remove_if()

删除满足谓词的元素

remove_copy()

复制序列时删除具有给定值的元素

remove_copy_if()

复制序列时删除满足谓词的元素

唯一

unique()

删除相邻的重复元素

unique_copy()

复制序列时删除相邻的重复元素

反转

reverse()

反转元素的次序

reverse_copy()

复制序列时反转元素的次序

环移

rotate()

循环移动元素

rotate_copy()

复制序列时循环移动元素

随机

random_shuffle()

采用均匀分布来随机移动元素

划分

partition()

将满足某谓词的元素都放到前面

stable_partition()

将满足某谓词的元素都放到前面并维持原顺序

 


序列排序及相关操作  27 个)

排序

sort()

以很好的平均效率排序

stable_sort()

排序,并维持相同元素的原有顺序

partial_sort()

将序列的前一部分排好序

partial_sort_copy()

复制的同时将序列的前一部分排好序

 n 个元素

nth_element()

将第 n 各元素放到它的正确位置

二分检索

lower_bound()

找到大于等于某值的第一次出现

upper_bound()

找到大于某值的第一次出现

equal_range()

找到(在不破坏顺序的前提下)可插入给定值的最大范围

binary_search()

在有序序列中确定给定元素是否存在

归并

merge()

归并两个有序序列

inplace_merge()

归并两个接续的有序序列

有序结构上的集合操作

includes()

一序列为另一序列的子序列时为真

set_union()

构造两个集合的有序并集

set_intersection()

构造两个集合的有序交集

set_difference()

构造两个集合的有序差集

set_symmetric_difference()

构造两个集合的有序对称差集(并 - 交)

堆操作

push_heap()

向堆中加入元素

pop_heap()

从堆中弹出元素

make_heap()

从序列构造堆

sort_heap()

给堆排序

最大和最小

min()

两个值中较小的

max()

两个值中较大的

min_element()

序列中的最小元素

max_element()

序列中的最大元素

词典比较

lexicographical_compare()

两个序列按字典序的第一个在前

排列生成器

next_permutation()

按字典序的下一个排列

prev_permutation()

 

按字典序的前一个排列


你可能感兴趣的:(STL-算法)