欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

STL算法

程序员文章站 2022-07-12 17:58:54
...

不变序列

不会修改算法所作用的容器或对象,使用与所有容器,时间复杂度O(n)
min:求两个对象较小的(可自定义比较器)
max:求两个对象较大的(可自定义比较器)
min_element:区间最小值(可自定义比较器)
max_element:区间最大值(可自定义比较器)
for_each:对区间的每个元素都做某种操作
count:等于某值的元素个数
count_if:符合某种条件的元素个数
find:等于某值的元素
find_if:符合某种条件的元素
。。。

变值算法

修改元区间或目标区间元素的值,不可属于关联容器
for_each:对区间的每个元素都做某种操作
copy:复制区间到别处
copy_backward:从后往前修改复制
swao_ranges:交换区间
transform:

template<class init,class outit,class unop>
outit transform(init first,init last,outit x,unop uop);

对[first,last)中的每个迭代器,执行uop操作,将结果依次放入从x开始的地方
返回迭代器,即x+(last-first),x可与first相等

删除算法

删除容器中某些元素,但不会减少元素个数(填充空位子)。不应用于关联容器。
remove:删除等于某个值的元素
remove_if:删除满足某种条件的元素
remove_copy:拷贝到另一个区间。等于某个值的元素不拷贝
remove_copy_if:拷贝到另一个区间。满足某种条件的元素不拷贝
unique:删除区间中连续相等的元素,只留下一个(可自定义比较器)

变序算法

改变元素顺序,不改变值,O(n),不适用于关联容器
reverse:颠倒次序
reverse:颠倒后拷贝到另一个区间,源程序不变
rotate:区间进行循环左移
next_permutation:区间改为下一个排列(可自定义比较器)
prev_permutation:区间改为上一个排列(可自定义比较器)
random_shuffe:随机打乱顺序
partition:区间内满足条件的元素移到前面

排序算法

O(n*log(n)),不适用于关联容器和list

sort:从小到大排序(可自定义比较器)(快速排序)
stable_sort:从小到大排序,保持相等元素间的相对次序(可自定义比较器)(归并排序)
make_heap:使区间成为一个“堆”(可自定义比较器)
push_heap:将元素加入一个是“堆”的区间(可自定义比较器)
pop_heap:删除堆顶元素(可自定义比较器)

有序区间算法

要求排好序的区间,不能用于关联容器和list
binary_search:折半查找
includes:判断是否一个区间中的每个元素都在另一个区间中
lower_bound:查找最后一个不小于某值的元素位置
upper_bound:查找第一个大于某值的元素位置
equal_range:两个都查找
merge:合并到第三个区间
set_union:并拷贝
set_intersection:交拷贝
set_difference:差拷贝
set_symmetric_difference:对称差拷贝
inplace_merge:原地合并

相关标签: c++

上一篇: 第八章

下一篇: 第八章