STL双端队列deque
STL双端队列特点:
deque 是一种双向开口的连续性空间,可以在头尾两端分别做元素的插入和删除操作。
deque模型图
使用STL deque需要:
#include < deque >
using namespace std;
deque定义:
deque<int> q;
deque<int> q2(10); //构建了指定长度的deque,并且有默认的初始值0
deque<int> q3(10,5); //构建了指定长度的deque,手动指定初始值deque<int> q4{1,2,3,4}; //使用初始化列表构建deque
deque的一些常用函数:
push_back()
尾添加
push_front()
头添加
pop_back()
尾删除
pop_front()
头删除
begin()
返回队列头元素的迭代器。
end()
返回队列尾元素的一下无效元素的迭代器。
deque<int> q;
q.push_back(1);
q.push_back(2);
q.push_back(3);
q.push_back(4);
q.push_front(0);
cout << *(q.end()-1) << endl;//4
cout << *(q.begin()) << endl;//0
back()
返回尾元素中的值。
front()
返回头元素中的值。
erase()
删除指定迭代器位置的节点,返回的是删除节点的下一个节点的迭代器。
//q 0 1 2 3 4
deque<int>::iterator ite = q.begin();
ite = q.erase(++ite);
cout << *ite << endl;//2 删除返回的是删除节点的下一个
insert()
指定迭代器位置之前插入一个元素,返回的是插入的元素的迭代器。
int a = 5;
ite = q.insert(ite, a);
cout << *ite << endl;//5
ite = q.begin();
while (ite != q.end()) {
cout << *ite << " ";//0 5 2 3 4
ite++;
}
cout << endl;
size()
返回队列元素数量。
empty()
是否为空。
clear()
清空队列