STL算法
不变序列
不会修改算法所作用的容器或对象,使用与所有容器,时间复杂度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:原地合并