码迷,mamicode.com
首页 > 编程语言 > 详细

STL算法小结

时间:2015-03-30 11:17:44      阅读:162      评论:0      收藏:0      [点我收藏+]

标签:

变动性算法
---------------------------------------------------------
名称             效果

for_each        针对每个元素执行某项操作
copy            从第一个元素开始,复制某段区间
copy_backward   从最后一个元素开始,复制某段区间
transform       变动(并复制)元素,将两个区间的元素合并
merge           合并两区间内的元素
swap_ranges     交换两区间内的元素
fill            以给定值替换每一个元素
fill_n          以给定值替换n个元素
generate        以某项操作的结果替换每一个元素
generate_n      以某项操作的结果替换n个元素
replace         将具有某特定值的元素替换为另外一个值
replace_if      将符合某准则的元素替换为另外一个值
replace_copy    复制整个区间,同时将具有某特定值的元素替换为另一个值
replace_copy_if 复制整个区间,同时将符合某个准则的元素替换为另外一个值

 

变序性算法
------------------------------------------------
名称                     效果
reverse              将元素的次序逆转
reverse_copy         复制的同时,逆序元素顺序
rotate               旋转元素次序
rotate_copy          复制的同时,旋转元素次序
next_permutation     得到元素的下一个排序次序
prev_permutation     得到元素的上一个排列次序
random_shuffle       将元素的次序随机打乱
partition            改变元素次序,使得符合某准则者移到前面
stable_partition     与partition相似,但保持符合准则与不符合准则的各个元素之间的相对位置

 

名称             作用
----------------------------------------
for_each         对每个元素执行某个操作
count            返回元素个数
count_if         返回满足某一准则的元素个数
min_element()    返回最小值元素
max_element()    返回最大值元素
find             搜寻等于某值的第一个元素
find_if          搜寻满足某个准则的第一个元素
search_n         搜寻具有某个特性的第一段"n个连续元素"
serach           搜寻某个子区间第一次出现的位置
find_end         搜寻某个子区间最后一次出现位置
find_first_of    搜寻等于某个值之一的第一个元素
adjacent_find    搜寻连续两个相等的元素
equal            判断两个区间是否相等
mismatch         判断两区间是否相等
lexicographical
_compare         是否小于另一个序列


string搜寻函数和STL搜索算法的比较

搜寻                                 string函数                           STL算法
-------------------------------------------------------------------------------
某元素第一次出现位置                  find()                           find()   
某元素最后一次出现位置               rfind()                          find() 采用逆向迭代器
某子区间第一次出现位置               find()                           serach()
某子区间最后一次出现位置            rfind()                          find_end()
某数个元素第一次出现位置            find_first_of()               find_first_of()
某数个元素最后一次出现位置         find_last_of()                first_first_of() 采用逆向迭代器
n个连续元素第一次出现位置                                             serach_n()

 

排序算法
----------------------------------------
名称                       效果

sort                    对所有元素排序
stable_sort             对所有元素排序,并保持相等元素间的相对次序
partial_sort            排序,直到前n个元素就位
partial_sort_copy       排序,直到前n个元素就位,结果复制于它处
nth_element             根据第n个位置进行排序
partiton                改变元素次序,使得符合某准则的元素放在前面
stable_partition        与partition相同,但保持符合准则和不符合准则的各个元素之间的相对位置
make_heap               将一个区间转换为一个heap
push_heap               将一个元素加入到heap
pop_heap                从heap移除一个元素
sort_heap               对heap进行排序,执行后就不再是一个heap了


sort ----------内部采用快速排序
partial_sort  ------- 采用heapsort算法
stable_sort ------- 采用mergesort

数值算法
---------------------------------------------------
名字                  功能

accumulate          组合所有元素(求总和,总乘积 ....)

inner_product       组合两区间内的所有元素

adjacent_difference  将每个元素和前一元素组合

partial_sum          将每个元素和其先前的所有元素组合

 

移除性算法
------------------------------------------
名称                   效果
remove            将等于某个特定值的元素全部移除
remove_if         将满足某个准则的元素全部移除
remove_copy       将不等于某个特定值的元素全部复制到它处
remove_copy_if    将不满足某个准则的元素全部复制到它处
unique            移除毗邻的重复元素
unique_copy       移除毗邻的重复元素,并重复到它处


移除算法只是逻辑上移除元素,手段是:将不需要移除的元素向前覆盖应被移除的元素。因此它并不改变
操作区间内的元素个数,而是返回逻辑上新的终点位置。

已序区间算法
---------------------------------------------
名称                         效果

binary_serach            判断某区间内是否包含某个元素
includes                 判断某区间内的每个元素是否都涵盖于另一个区间中
lower_bound              搜寻第一个大于等于给定值的元素
upper_bound              搜寻第一个大于给定值的元素
equal_range              返回等于给定值的所有元素的区间
merge                    将两个区间的元素合并
set_union                求两个区间的并集
set_intersection         求两个区间的交集
set_difference           求位于第一区间但不位于第二区间的所有元素,形成一个已序区间
set_symmetric_difference 找出只出现于两区间之一的所有元素,形成一个已序区间
inplace_merge            将两个连续的已序区间合并

 

STL算法小结

标签:

原文地址:http://www.cnblogs.com/david-wang/p/4377360.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!