STL
(Standard Template Library)是C++标准库的一部分,它提供了许多容器、迭代器、算法和其他实用工具,帮助开发者更有效地编写C++代码。虽然STL
本身并不是由函数组成的(它是基于类和模板的),但我们可以说它提供了一组用于操作容器和数据的算法和工具。
以下是一些常用的STL容器和算法的例子:
STL容器
std::vector
: 动态数组,可以方便地添加、删除元素。std::list
: 双向链表,支持在任何位置快速插入和删除元素。std::deque
: 双端队列,支持在两端快速插入和删除元素。std::set
和std::multiset
: 基于红黑树的集合,元素唯一(set
)或可重复(multiset
)。std::map
和std::multimap
: 基于红黑树的关联容器,保存键值对,键唯一(map
)或可重复(multimap
)。std::queue
: 队列,通常使用deque
或list
作为底层容器。std::stack
: 栈,通常使用deque
或list
作为底层容器。std::priority_queue
: 优先队列,通常实现为最大堆。std::unordered_set
、std::unordered_map
、std::unordered_multiset
、std::unordered_multimap
: 基于哈希表的容器,提供更快的查找速度,但元素的顺序不保证。
STL算法
STL算法可以在任何类型的容器上(或甚至任何迭代器范围内的元素上)进行操作。以下是一些常用的算法:
std::sort
: 对容器或迭代器范围内的元素进行排序。std::binary_search
: 在已排序的容器或迭代器范围内查找特定元素。std::find
: 在容器或迭代器范围内查找特定元素。std::copy
: 将元素从一个容器或迭代器范围复制到另一个容器或迭代器范围。std::remove
: 从容器或迭代器范围中删除特定值的元素(实际上并不删除,而是将所有非删除元素移到容器的前端,并返回新的逻辑末端)。std::unique
: 去除容器或迭代器范围中的连续重复元素(仅保留每个重复组的第一个元素)。std::merge
: 合并两个已排序的容器或迭代器范围。std::for_each
: 对容器或迭代器范围内的每个元素执行特定操作。std::transform
: 对容器或迭代器范围内的每个元素应用特定函数,并将结果存储到另一个容器或迭代器范围。- ...以及其他许多算法。