# 标准库容器 ## 容器类
标准库容器
容器类型 说明
序列型容器 deque(双端序列) vecor(变长数组) list(双向链表)
转换序列型容器 stack(栈) queue(队列) priority_stack(优先队列)
关联型容器 set(集合) map(映射) bitset(整数专用集合)
​ 此外,还有`set`和`map`的`多重值变体`:**multiset**和**multimap** ## 容器通用标准 ​ 记C为容器类型,则: 容器的基本要求
C::value_type 容器储存的数据类型
C::reference 容器数据的引用类型
C::const_reference 容器数据的只读引用类型
C::size_type 容器容量类型,一般是一个size_t
size() 返回当前容器的元素的个数
max_size() 返回容器最大可容元素数
empty() 返回容器是否为空
swap(C& a) 用于和另一个同类型容器互换内容
​ 此外,标准库容器还通用了一套迭代器界面: | C::iterator | 迭代器类型 | | ------------------ | ------------------------------------------ | | C::const_iterator | 只读迭代器 | | C::difference_type | 用于迭代器的跳转,如果容器不支持,用处不大 | | begin() | 指向容器序列首元素的迭代器 | | end() | 指向容器序列尾元素的迭代器 | 对于能够提供反向迭代器的容器: | C::reverse_iterator | 反向迭代器类型 | | ------------------- | -------------- | | C::const_reverse_iterator|只读反向迭代器类型| |rbegin()|指向容器序列尾元素的迭代器| |rend()|指向容器首元素的迭代器| ​ 此外,C++11标准还增加了四个成员函数`cbegin()`,`cend()`,`crbegin()`,`crend()`返回对应的只读迭代器。 ## 一、序列型容器 ​ 以S代表序列型容器。 ### 构造函数 1. S(a,b) 该构造函数将构造a个含b对象的节点。如果忽略b,将使用容器类型的默认值。 2. S(i,j) 其中,i、j为任意迭代器对象。该构造函数将构造一个包含迭代器i、j所指范围[i,j)内所有数据的副本的容器。