STL容器分类

25 阅读2分钟

STL(Standard Template Library,标准模板库)是 C++ 标准库的一部分,提供了一系列通用的模板类和函数,用于实现常见的数据结构和算法。STL 容器是其中的一个重要部分,用于存储和管理数据。

STL 容器主要分为以下几类:

  1. 序列容器(Sequence Containers): 序列容器以线性序列的形式存储元素,可以按照插入的顺序访问元素,并支持在任意位置插入或删除元素。常见的序列容器包括:

    • std::vector:动态数组,支持快速的随机访问和在尾部添加元素。
    • std::deque:双端队列,支持在头部和尾部快速插入和删除元素。
    • std::list:双向链表,支持在任意位置快速插入和删除元素,但不支持随机访问。
  2. 关联容器(Associative Containers): 关联容器以键-值对(key-value)的形式存储元素,元素之间是有序的,并且可以根据键快速查找元素。常见的关联容器包括:

    • std::set:基于红黑树实现的集合,元素按照升序排列,不允许重复元素。
    • std::map:基于红黑树实现的关联数组,每个元素包含一个键和一个值,按照键的升序排列,不允许重复的键。
    • std::multiset:允许重复元素的集合,其他特性与 std::set 相似。
    • std::multimap:允许重复键的关联数组,其他特性与 std::map 相似。
  3. 无序关联容器(Unordered Associative Containers): 无序关联容器以哈希表的形式存储元素,元素之间没有明确定义的顺序,并且可以根据键快速查找元素。常见的无序关联容器包括:

    • std::unordered_set:基于哈希表实现的集合,元素之间无序,不允许重复元素。
    • std::unordered_map:基于哈希表实现的关联数组,元素之间无序,不允许重复的键。
    • std::unordered_multiset:允许重复元素的集合,其他特性与 std::unordered_set 相似。
    • std::unordered_multimap:允许重复键的关联数组,其他特性与 std::unordered_map 相似。
  4. 适配器容器(Container Adapters): 适配器容器是对其他容器的封装,提供了特定的接口和行为。常见的适配器容器包括:

    • std::stack:栈,基于 dequelistvector 实现的后进先出(LIFO)数据结构。
    • std::queue:队列,基于 dequelist 实现的先进先出(FIFO)数据结构。
    • std::priority_queue:优先队列,基于 vector 实现的优先级队列,元素按照一定的优先级顺序出队。

这些容器提供了不同的特性和适用场景,可以根据具体的需求选择合适的容器类型。