CC++STL-常用算法
# C/C++:STL-常用算法
算法主要是由头文件<algorithm>
,<functional>
,<numeric>
组成
# 遍历算法
# for_each
std::for_each(beg, end, _func);
# transform
std::transform(beg1, end1, beg2, _func);
注意搬运前需要提前开辟空间。
# 查找算法
# find
std::find(beg, end, value);
查找自定义类型的时候,需要重载==
# find_if
std::find_if(beg, end, _func);
# adjacent_find
查找相邻重复元素,如果找到则返回第一个元素的迭代器
std::adjacent_find(beg, end);
拓展:
可以查找第一个开始不是递增的元素:
std::adjacent_find(beg, end, greater<int>());
# binary_search
二分法查找元素是否存在
bool std::binary_search(beg, end, value);
序列必须有序
# count
std::count(beg, end, value);
# count_if
std::count_if(beg, end, _func);
# 排序算法
# sort
std::sort(beg, end[, _Pred]);
# random_shuffle
std::random_shuffle(beg, end);
# merge
std::merge(beg1, end1, beg2, end2, iterator dest);
注意!两个容器元素必须是有序且同序的
# reverse
std::reverse(beg, end);
# 拷贝和替换算法
# copy
std::copy(beg, end, dest);
# replace
std::replace(beg, end, oldvalue, newvalue);
# replace_if
std::reverse(beg, end, _Pred, newvalue);
# swap
std::reverse(container c1, container c2);
两种容器的类型要一致
# 算术生成算法
使用时包含头文件<numeric>
# accumulate
std::accumulate(beg, end, value);
- value是起始累加值
# fill
std::fill(beg, end, value);
# 集合算法
# set_intersection
求交集,需要两个集合必须是有序序列
std::reverse(beg1, end1, beg2, end2, dest);
# set_union
求并集,需要两个集合必须是有序序列
std::reverse(beg1, end1, beg2, end2, dest);
# set_difference
求差集,需要两个集合必须是有序序列
std::reverse(beg1, end1, beg2, end2, dest);
编辑 (opens new window)
上次更新: 2023/08/15, 01:36:48