STL算法函数

刚学完《STL程序员开发指南》

把算法中常用的函数列一下,备查

把常用到的STL算法列下 备查


非修正序列算法:

对原序列不进行修改,功能是查找比较为主

adjacent_find 查找相同的相邻元素 反悔第一个元素的迭代器
find 查找元素 还有find系列查找函数
find_first_of
find_end
find_last_of....
count 统计相同元素的个数
count_if
mismatch 返回pair<第一个序列的迭代器,第二个序列的迭代器>表明第一处不相符合的位置
equal 比较容器中的元素是否相同
for_each 非常常用,遍历序列,并对序列中每个元素采用仿函数中定义的操作
search 返回迭代器,第一次出现序列2或者某元素的位置
search_n 前n次连续出现某元素或者符合条件的第一个位置

 

修正序列算法:
对原序列进行操作

copy 复制元素到目的容器
copy_backward 从后往前复制
fill 用某元素填充容器
fill_n 前n个元素
generate 把仿函数产生的结果依次复制到容器中
generate_n
partition 以仿函数为标准,把容器分成前后两部分,前半部分是能使仿函数返回真的元素,后半返回假
stable_partition
random_shuffle 对容器中的元素进行随机排列
remove 删除某一范围内的元素,注意:移除的元素被放到容器末尾,还是可以用迭代器遍历到,函数返回移除后容器的末尾
remove_if
erase 擦除区间内所有的元素
replace 在规定区间内把某值换成新值
replace_if
replace_copy 把区间内元素复制到目的地并且把其中某些元素替换成新值
replace_copy_if
rotate 把middle-end的元素放到first的位置上
rotate_copy
swap 元素的交换
swap_ranges
transform 把元素按照仿函数中内容转换
unique 保证相邻元素间没有相同的,可以加仿函数做为判断依据,返回最后一个位置的迭代器
unique_copy

 

排序算法:

sort 普通排序,用快排来实现
stable_sort 稳定排序,保证值相等的元素排序后相对位置不变,用归并排序实现
partial_sort 部分排序,保证前n个值有序并且后面的值不在前n个值的范围内,但后面的值不保证有序,堆排序实现
partial_sort_copy
nth_element 把第n个元素放到第n个位置上去,比他大的都在后,比他小的都在前,但各自都不保证有序

//////////以下函数都是在有序容器中使用///////////////////////////

binary_search 二分法搜索,在有序容器中提高搜索速度
lower_bound 返回第一次出现该元素的位置
upper_bound 返回最后一次出现该元素的后一位置
equal_range 返回pair<lower_bound,upper_bound>
inplace_merge 将连贯有序序列合并
merge 合并两个容器
includes 判断某区间内所有的元素是否在另一区间中
////////////////////////////////////////////////////////////////////

min max 最大最小值
min_element max_element 最大最小位置的迭代器
lexicograplical_compare 范围内的字典序比较,前后序列的比较
next_permutation prev_permutation 上一个/下一个全排列

push_heap 堆操作
pop_heap
sort_heap
make_heap
set_intersection 集合操作
set_difference
set_symmetric_difference


数值计算<numeric>
accumulate 遍历求和,也可以用仿函数求其他数值
inner_product 内积,相应位置相乘再相加
partial_sum 部分元素之和,把结果放到后一容器中,后一容器的第n个元素师前一容器的前n个容器元素之和
adjacent_difference 相邻元素之差,把结果放到后一容器中

转载于:https://www.cnblogs.com/w0w0/archive/2012/04/19/2456830.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值