一、容器分类
1、容器分类
顺序存储结构(vector、list、deque)、关联存储结构(set、map、mutiset、multimap)两类容器。
标准容器类 | 说明 | 用法 |
---|
| | |
顺序容器类 | | |
vector | 从后面快速的插入与删除,直接访问任何元素 | 相当于一个数组,在内存中分配一块连续的内存空间进行存储。支持不指定 vector 大小的存储 |
deque | 从前面或后面快速的插入与删除,直接访问任何元素 | 双端队列 |
list | 双链表,从任何地方快速插入与删除 | 双向链表,每一个结点都包括一个信息快 Info、一个前驱指针 Pre、一个后驱指针 Post |
- 使用区别如果你需要高效的随即存取,而不在乎插入和删除的效率,使用 vector
- 如果你需要大量的插入和删除,而不关心随机存取,则应使用 list
- 如果你需要随机存取,而且关心两端数据的插入和删除,则应使用 deque
标准容器类 | 说明 |
---|
关联容器类 | |
set | 快速查找,不允许重复值 |
multiset | 快速查找,允许重复值 |
map | 一对多映射,基于关键字快速查找,不允许重复值 |
multimap | 一对多映射,基于关键字快速查找,允许重复值 |
容器设配器 (基于基本容器实现的基本容器一样的东西就是适配器) | 说明 |
---|
stack | 后进先出 |
queue | 先进先出 |
priority_queue | 最高优先级元素第一个出列 |
二、容器常见操作
1、顺序容器和关联容器公共函数
函数 | 功能 |
---|
begin | 该函数两个版本返回 iterator 或 const_iterator,引用容器第一个元素 |
end | 该函数两个版本返回 iterator 或 const_iterator, 引用容器最后一个元素后面一位 |
rbegin | 该函数两个版本返回 reverse_iterator 或 const_reverse_iterator, 引用容器最后一个元素 |
rend | 该函数两个版本返回 reverse_iterator 或 const_reverse_iterator,引用容器第一个元素面一位 |
erase | 从容器中清除一个或几个元素 |
clear | 清除容器中所有元素 |
2、vector基本操作
操作 | 说明 | 解释 |
---|
头文件 | #include<vector> | |
初始化 | vector<~> vec | ~值可以是 int,double,string, 还可以是结构体,结构体要定义成全局 |
尾部插入数字 | vec.push_back(a) | |
下标访问 | vec[i] | 访问第i个元素 |
插入元素 | vec.insert(vec.begin()+i,a) | 在第 i+1 个元素前面插入 a |
删除元素 | vec.erase(vec.begin()+2) | 删除第 3 个元素 |
向量大小 | vec.size() | |
清空 | vec.clear() | |
排序 | 引入#include<algorithm> | sort(vec.begin(),vec.end());(默认是按升序排列, 即从小到大) |
翻转 | 引入#include<algorithm> | reverse(vec.begin(),vec.end()); 将元素翻转 |
相关链接:http://www.cnblogs.com/wang7/archive/2012/04/27/2474138.html
3、list 的基本操作
操作 | 说明 | 解释 |
---|
头文件 | #include<list> | |
初始化 | list<int> list | |
list::push_front() | 在 list 的前端插入一个元素 | |
list::pop_front() | 删除 list 的第一个元素 | |
list::push_back() | 在 list 的末端插入一个元素 | |
list::pop_back() | 删除 list 的最后一个元素 | |
list::insert() | 在指定位置插入一个或多个元素。对于插入大量元素来说是非常高效的 | |
相关链接:http://blog.youkuaiyun.com/zhangliang_571/article/details/26143631
4、dequeu 的基本操作
操作 | 说明 | 解释 |
---|
头文件 | #include<deque> | |
初始化 | deque<int> d | |
删除双端队列中最前一个元素 | void pop_front() | |
删除双端队列中最后一个元素 | void pop_back() | |
返回 pos 位置元素的引用 | reference at(int pos) | |
返回首元素的引用 | reference front() | |
返回尾元素的引用 | reference back() | |
返回向量头指针,指向第一个元素 | iterator begin() | |
返回指向向量中最后一个元素下一个元素的指针(不包含在向量中) | iterator end() | |
相关链接:http://blog.youkuaiyun.com/longshengguoji/article/details/8519812