文章目录

  • 概要
  • 顺序容器
  • 关联容器
  • 无序关联容器
  • 参考


概要

C++ 标准库(STL,Standard Template Library)提供了多种容器,每种容器都有其特定的用途和特点。以下是一些常用的 STL 容器及其简要说明。

顺序容器

  • std::vector:
  • 动态数组,可以在尾部高效地添加和删除元素,支持随机访问。
  • 存储在连续的内存块中,具有较好的缓存局部性。
  • std::deque:
  • 双端队列,允许在两端高效地插入和删除元素。
  • 内部实现为多个块,适合需要频繁在两端操作的场景。
  • std::list:
  • 双向链表,允许在任意位置高效地插入和删除元素。
  • 不支持随机访问,适合频繁插入和删除操作。
  • std::forward_list:
  • 单向链表,与 std::list 类似,但只支持向前遍历。
  • 占用内存较少,适合只需要单向遍历的场景。
  • std::array:
  • 固定大小的数组,具有与原生数组相似的性能,但提供了 STL 的接口和功能。
  • 大小在编译时确定,不支持动态扩展。

关联容器

  • std::set:
  • 存储唯一元素的集合,元素按特定顺序排列(通常是升序)。
  • 支持快速查找、插入和删除操作(O(log n))。
  • std::multiset:
  • 类似于 set,但允许存储重复元素。
  • 也支持按顺序排列元素。
  • std::map:
  • 存储键值对,键是唯一的,按键的顺序排列。
  • 支持快速查找和插入(O(log n)),适合需要键值关联的场景。
  • std::multimap:
  • 类似于 map,但允许键重复。
  • 适合需求中键可能重复的情况。

无序关联容器

  • std::unordered_set:
  • 存储唯一元素的集合,元素无序存储。
  • 基于哈希表实现,查找、插入和删除操作平均时间复杂度为 O(1)。

  • std::unordered_multiset:
  • 类似于 unordered_set,但允许存储重复元素。
  • std::unordered_map:
  • 存储键值对,键是唯一的,元素无序存储。
  • 基于哈希表实现,支持平均 O(1) 的查找、插入和删除操作。

  • std::unordered_multimap:
  • 类似于 unordered_map,但允许键重复。

参考

https://www.runoob.com/cplusplus/cpp-libs-deque.html