容器是一个持有人对象, 用于存储其他对象(其元素)的集合。它们作为类模板实现, 这在作为元素支持的类型上提供了极大的灵活性。
容器管理其元素的存储空间, 并提供直接或通过迭代器(具有与指针相似的属性的引用对象)访问它们的成员函数。
序列容器
序列容器实现了可以顺序访问的数据结构。
- array数组:静态连续数组(类模板)
- vector向量:动态连续数组(类模板)
- deque双端队列:双端队列(类模板)
- forward_list:单链接列表(类模板)
- list列表:双链表(类模板)
关联容器
关联容器实现了可以快速搜索的排序数据结构(O(log n)复杂度)。
Set:唯一键的集合, 按键排序(类模板)
map散列表:键值对的集合, 按键排序, 键是唯一的(类模板)。
multiset:键集合, 按键排序(类模板)
multimap:键值对的集合, 按键排序(类模板)
无序关联容器
无序关联容器实现了可以快速搜索的未排序(哈希)数据结构(O(1)摊销, O(n)最坏情况的复杂度)。
- unordered_set:唯一键的集合, 由键散列。 (类模板)
- unordered_map:键值对的集合(由键散列)是唯一的。 (类模板)
- unordered_multiset:键集合, 按键散列(类模板)
- unordered_multimap:键值对的集合, 按键散列(类模板)
容器适配器
容器适配器为顺序容器提供了不同的接口。
- stack栈:调整容器以提供堆栈(LIFO数据结构)(类模板)。
- queue队列:调整容器以提供队列(FIFO数据结构)(类模板)。
- priority_queue优先队列:调整容器以提供优先级队列(类模板)。
自适应容器和无序容器的流程图
序列容器和有序容器的流程图
更多有用的链接
被认为是行业中最受欢迎的技能之一, 我们拥有自己的编码基础C ++ STL通过激烈的问题解决过程来训练和掌握这些概念。