c++学习笔记十一(STL算法)

算法构成

头文件 功能
<algorithm 算法函数
<numeric 算法数值
<functional 函数对象/仿函数

c++STL常用算法

一.填充
函数 作用
fill(beg,end,val) 将值val赋给[beg,end)范围内的所有元素
fill_n(beg,n,val) 将值val赋给[beg,beg+n)范围内的所有元素
generate(beg,end,func) 连续调用函数func填充[beg,end)范围内的所有元素
generate_n(beg,n,func) 连续调用函数func填充[beg,beg+n)范围内的所有元素

注意:fill()/fill_n()用于填充相同值,generate()/generate_n()用于填充不同值。

二.遍历/变换
函数 作用
for_each(beg,end,func) 将[beg,end)范围内所有元素依次调用函数func,不修改序列中的元素
transform(beg,end,res,unary) 将[beg,end)范围内所有元素依次调用函数unary,结果放入res中
transform(beg2,end1,beg2,res,func) 将[beg,end)范围内所有元素与[beg,beg2+end-beg)中所有元素依次调用函数func,结果放入res中
三.最大最小
函数 作用
max(a,b) 返回两个元素中较大一个
max(a,b,cmp) 使用自定义比较操作cmp,返回两个元素中较大一个
max_element(beg,end) 返回一个ForwardIterator,指出[beg,end)中最大的元素
max_element(beg,end,cmp) 使用自定义比较操作cmp,返回一个ForwardIterator,指出[beg,end)中最大的元素
min(a,b) 返回两个元素中较小一个
min(a,b,cmp) 使用自定义比较操作cmp,返回两个元素中较小一个
min_element(beg,end) 返回一个ForwardIterator,指出[beg,end)中最小的元素
min_element(beg,end,cmp) 使用自定义比较操作cmp,返回一个ForwardIterator,指出[beg,end)中最小的元素
四.排序算法(12个):提供元素排序策略
函数 作用
sort(beg,end) 默认升序重新排列元素
sort(beg,end,comp) 使用函数comp代替比较操作符执行sort()
partition(beg,end,func) 元素重新排序,使用func函数,把结果为true的元素放在结果为false的元素之前
stable_sort(beg,end) 与sort()类似,保留相等元素之间的顺序关系
stable_sort(beg,end,func) 使用函数func代替比较操作符执行stable_sort()
stable_partition(beg,end) 与partition()类似,保留容器中的相对顺序
stable_partition(beg,end,func) 使用函数func代替比较操作符执行stable_partition()
partial_sort(beg,mid,end) 部分排序,被排序元素个数放到[beg,end)内
partial_sort(beg,mid,end,comp) 使用函数comp代替比较操作符执行partial_sort()
partial_sort_copy(beg1,end1,beg2,end2) 与partial_sort()类似,只是将[beg1,end1)排序的序列复制到[beg2,end2)
partial_sort_copy(beg1,end1,beg2,end2,func) 使用函数func代替比较操作符执行partial_sort_copy()
nth_element(beg,nth,end) 单个元素序列重新排序,使所有小于第n个元素的元素都出现在它前面,而大于它的都出现在后面
nth_element(beg,nth,end,comp) 使用函数comp代替比较操作符执行nth_element()
五.反转/旋转
函数 作用
reverse(beg,end) 元素重新反序排序
reverse_copy(beg,end,res) 与reverse()类似,结果写入res
rotate(beg,mid,end) 元素移到容器末尾,由mid成为容器第一个元素
rotate_copy(beg,mid,end,res) 与rotate()类似,结果写入res
六.随机
函数 作用
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值