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