一. deque
(一)deque与vector区别
1. deque是双端数组或者双端队列,而vetor是单端的
2. deque头部和尾部添加元素都比较快,而尾部添加快,头部很慢,因此vector只有push_back()和pop_back()函数,而deque多了push_front()和pop_front()函数
3. deque是段连式空间插入和删除比vector快比list慢,deque插入和删除只用移动每一段空间,空间不够用时deque不删除之前元素而是申请一段空间存放那些元素
4.deque没有capacity函数和reserva函数
5.deque随机访问比vector慢,因为要处理每一段。排序函数执行一般先放入vector在排
6.deque介于vector和list之间,deque相当于一小段vector放入list中
二.stack
简介
1. stack是堆栈容器,先进后出,有push()压栈,pop()出栈,top()栈顶元素
2. 栈不支持遍历和随机存取,不提供迭代器,只能访问栈顶
三.queue
简介
1. queue是队列,先进先出。
2. 只能队尾添加push(),队头删除pop()
3. 可以返回队首元素front()和队尾元素back()
4. 不能随机访问,不提供迭代器
四.List
(一)简介
- list是双向链表,可有效的插入和删除数据,不支持随机访问
- 提供迭代器,但ite++可以,ite+elem不行
- 没有capacity()函数,无需预留空间,边插边加。
(二)删除元素
1. clear():删除所有
2. erase() : 删除区间或者pos位置元素
2. remove(elem):删除elem元素
3. unique():删除相同元素
(三)其他函数
1. reverse() //把list元素反转,注意区分vector中的reserve()函数
2. sort() // list有成员函数sort(),用sort()最好用成员函数而不用算法
3. merge() //合并,要求两链表有序
4. splice() // 拼接(和insert类似)
五.priority_queue
(一)介绍
具有优先级的队列
头文件:#include
从大到小排序声明:priority_queue que;
从小到大排序声明:priority_queue<int, vector, greater > que;
#include<iostream>
#include<queue>
using namespace std;
int main()
{
//最大值优先(默认)
priority_queue<int>pq2;
pq2.push(0);
pq2.push(11);
pq2.push(3);
pq2.push(6);
while (!pq2.empty())
{
cout << pq2.top() << endl;
pq2.pop();
}
cout << endl;
//最小值优先
priority_queue<int,vector<int>,greater<int>> pq1;
pq1.push(0);
pq1.push(11);
pq1.push(3);
pq1.push(6);
while (!pq1.empty())
{
cout << pq1.top() << endl;
pq1.pop();
}
system("pause");
return 0;
}