一、容器分类
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.csdn.net/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.csdn.net/longshengguoji/article/details/8519812