C++中的容器类

时间:2022-11-20 14:11:03

一、容器分类

1、容器分类

顺序存储结构(vector、list、deque)、关联存储结构(set、map、mutiset、multimap)两类容器。

标准容器类 说明 用法
顺序容器类
vector 从后面快速的插入与删除,直接访问任何元素 相当于一个数组,在内存中分配一块连续的内存空间进行存储。支持不指定 vector 大小的存储
deque 从前面或后面快速的插入与删除,直接访问任何元素 双端队列
list 双链表,从任何地方快速插入与删除 双向链表,每一个结点都包括一个信息快 Info、一个前驱指针 Pre、一个后驱指针 Post
  1. 使用区别如果你需要高效的随即存取,而不在乎插入和删除的效率,使用 vector
  2. 如果你需要大量的插入和删除,而不关心随机存取,则应使用 list
  3. 如果你需要随机存取,而且关心两端数据的插入和删除,则应使用 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