这里写目录标题
STL之deque 【双端队列】
deque :双端队列是 C++ 标准库中的一种容器,它允许高效地从两端添加和删除元素。deque
是一个动态数组,支持快速随机访问,并且可以在前端和后端高效地执行插入和删除操作。
头文件:
c
#include <deque>
using namespace std;
创建deque
c
deque<int> myDeque;
添加元素
push_back(value)
:在双端队列的末尾插入元素。push_front(value)
:在双端队列的开头插入元素。
c
myDeque.push_back(2);
myDeque.push_front(1);
删除元素:
pop_back()
:从双端队列的末尾删除元素。pop_front()
:从双端队列的开头删除元素。
c
myDeque.pop_back();//队尾删除
myDeque.pop_front();//队头删除
//5.删除指定位置元素,在指定位置插入元素
deque<int>::iterator it = myDeque.begin();
advance(it, 2);
it=myDeque.erase(it);//更新it,返回的是删除元素的原来的索引
myDeque.insert(it,40);//在刚刚被删除元素的原来位置插入一个新的元素
修改元素:
c
myDeque[0] = 20;//可以直接索引修改,索引有可能会越界
myDeque.at(1) = 30;//可以直接索引修改,会抛出异常
访问元素:
at(index)
:根据索引访问元素,抛出异常以处理越界情况。front()
:访问队列的第一个元素。back()
:访问队列的最后一个元素。
c
//4.访问元素
cout << "队列第一个元素:" << myDeque.front() << " 队列最后一个元素:" <<myDeque.back() <<endl;
cout << "队列第3个元素:" << myDeque.at(2) << endl;
遍历队列deque
c
//6.遍历队列
for (int element : myDeque) {
cout << element << " ";
}
综合示例:
c
#include <iostream>
#include <list>
#include <string>
#include <deque>
using namespace std;
int main() {
//1.创建队列
deque<int> myDeque;
//2.添加元素
myDeque.push_back(2);
myDeque.push_back(3);
myDeque.push_back(4);
myDeque.push_back(5);
myDeque.push_back(6);
myDeque.push_front(1);
//3.删除元素
myDeque.pop_back();//队尾删除
myDeque.pop_front();//队头删除
//4.访问元素
cout << "队列第一个元素:" << myDeque.front() << " 队列最后一个元素:" <<myDeque.back() <<endl;
cout << "队列第3个元素:" << myDeque.at(2) << endl;
//5.删除指定位置元素,在指定位置插入元素
deque<int>::iterator it = myDeque.begin();
advance(it, 2);
it=myDeque.erase(it);//更新it,返回的是删除元素的原来的索引
myDeque.insert(it,40);//在刚刚被删除元素的原来位置插入一个新的元素
myDeque[0] = 20;//可以直接索引修改,索引有可能会越界
myDeque.at(1) = 30;//可以直接索引修改,会抛出异常
//6.遍历队列
for (int element : myDeque) {
cout << element << " ";
}
return 0;
}
那么deque的用法就讲到这里,下一章看priority_queue的用法。关注我,为大家持续分享更多的内容,让学习变得更简单,与君共勉,共同成长。