算法构成
头文件 |
功能 |
<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 |
六.随机