STL算法库

-目录-

std::算法库

按照功能划分的STL算法库。

内容详细来源:算法库 - cppreference.com

图解:C++ Standard Library Algorithms Visual Overview | hacking C++ (hackingcpp.com)

注意:如果算法仅仅是替代了for循环,那么std算法适用于序列化容器。容器自己有相应方法时不要使用std算法。例如remove和成员方法erease。

检查元素

查找元素

计数

复制与移动

uninitialized系列会调用拷贝构造函数::new (static_cast<void*>(std::addressof(*current))) T(*first);,适用于需要额外分配内存的场景,例如对象内有一个char*,需要构造函数进行分配空间。

填充

遍历处理

移除与替换

交换与改变顺序

划分

排序

集合(已排序范围上)

最大堆

堆是一种满足特定规则的完全二叉树,其中每个节点的值都大于等于(或小于等于)它的子节点的值。堆通常使用数组来实现。最大堆是指大根堆,root是最大的

最小最大值与比较

排列

数值运算

惯用法

移动和擦除 remove and erease

remove等会把元素移动到末尾并返回无效的第一个(有效的最后一个元素的后一个)的迭代器。

利用erease移除这个迭代器到最后一个无效的,即可达成真正的移除目的。

auto end = unique(v.begin(), v.end());
v.erase(end, v.end());
© 2019 - 2023 · YuYoung's Blog