# 标准库容器
## 容器类
标准库容器
| 容器类型 |
说明 |
| 序列型容器 |
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)内所有数据的副本的容器。