STL算法主要分为两大类非变序算法和变序算法,博文可供收藏
1、非变序算法
非变序算法包括计数算法、搜索算法、比较算法
1.1 计数算法
算法 |
描述 |
count() |
在指定范围内查找值与指定值匹配的所有元素 |
count_if() |
在指定范围内查找值满足指定条件的所有元素 |
1.2 搜索算法
算法 |
描述 |
search_n() |
在目标范围内搜索与指定值相等或满足指定谓词的n个元素 |
find() |
在给定范围搜索与指定值匹配的第一个元素 |
find_if() |
在给定范围内满足指定条件的第一个元素 |
find_end() |
在指定范围内搜索最后一个满足特定条件的元素 |
find_first_of() |
在目标范围内搜索指定序列中的任何一个元素第一次出现的位置;另一个重载版本中,在它搜索满足指定条件的第一个元素 |
adjacent_find() |
在集合中搜索两个相等或满足指定条件的元素 |
1.3 比较算法
算法 |
描述 |
equal() |
比较两个元素是否相等或使用指定的二元谓词判断两者是否相等 |
mismatch() |
使用指定的二元谓词找出两个元素范围的第一个不同的地方 |
2. 变序算法
变序算法改变操作的序列的元素书匈奴或内容
2.1 初始化算法
算法 |
描述 |
fill() |
将指定值分配给指定范围的每个元素 |
fill_n() |
将指定值分配给指定范围中的前n个元素 |
generate() |
将指定函数对象的返回值分配给指定范围中的每个元素 |
generate_n() |
将指定函数的返回值分配给指定范围中的前n个元素 |
2.2 修改算法
算法 |
描述 |
for_each() |
将指定范围中的每个元素执行指定的操作将指定的参数修改了范围时,for_each将是便是变序算法 |
transform() |
对指定范围中的每个元素执行指定的一元函数 |
2.3 复制算法
算法 |
描述 |
copy() |
将一个范围复制到另一个范围 |
copy_backward() |
将一个范围复制到另一个范围,但在目标范围中将元素的排序顺序反转 |
2.4 删除算法
算法 |
描述 |
remove() |
将指定范围中包含指定值的元素删除 |
remove_if() |
将指定范围中满足指定一元谓词的元素删除 |
remove_copy() |
将源范围中除包含指定值外的锁元素复制到目标范围 |
remove_copy_if() |
将源范围中除满足指定一元谓词外的所有元素复制到目标范围 |
unique() |
比较指定范围内的相邻元素,并删除重复的元素 |
unique_copy() |
将源范围内的所有元素复制到目标范围,但相邻的重复元素除外 |
2.5 替换算法
算法 |
描述 |
replace() |
用一个值来替换指定范围中与指定值匹配的所有元素 |
replace_if() |
用一个值来替换指定范围中满足指定条件的所有元素 |
|
|
2.6 排序算法
算法 |
描述 |
sort() |
使用指定的排序标准对指定范围内的元素进行排序,排序标准由二元谓词提供。排序可能改变相 |
等元素的相对顺序 |
|
stable_sort() |
类似于 sort,但在排序时保持相对顺序不变 |
partial_sort() |
将源范围内指定数量的元素排序 |
partial_sort_copy() |
将源范围内的元素复制到目标范围,同时对它们排序 |
2.7 分区算法
算法 |
描述 |
partition() |
在指定范围中,将元素分为两组:满足指定一元谓词的元素放在第一个组中,其他元素放在第二组中。不一定会保持集合中元素的相对顺序 |
stable_partition() |
与 partition 一样将指定范围分为两组,但保持元素的相对顺序不变 |
2.8 可用于有序容器的算法
算法 |
描述 |
binary_search() |
用于判断一个元素是否存在于一个排序集合中 |
lower_bound() |
根据元素的值或二元谓词判断元素可能插入到排序集合中的第一个位置,并返回一个指向该位置的迭代器 |
upper_bound() |
根据元素的值或或二元谓词判断元素可能插入到排序集合中的最后一个位置,并返回一个指向该位置的迭代器 |