STL之deque 【双端队列】

这里写目录标题

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的用法。关注我,为大家持续分享更多的内容,让学习变得更简单,与君共勉,共同成长。

相关推荐
iCxhust4 分钟前
51单片机电力载波应用开发(七)广播通讯
c语言·开发语言·单片机·嵌入式硬件·51单片机
Benny_Tang25 分钟前
AT_arc180_d [ARC180D] Division into 3 题解
数据结构·c++·算法
殷色玫瑰38 分钟前
C++ STL:stack、queue、priority_queue 与容器适配器详解
java·开发语言·数据结构·c++·算法·visualstudio
IT方大同1 小时前
java输入输出+方法
java·开发语言·python
滕州市燕猫虎计算机科技工作室个体工商户1 小时前
《Rust程序设计》学习笔记一
开发语言·rust·学习笔记·rust程序设计
Wang's Blog1 小时前
Java框架 SpringCloud 快速入门: 服务拆分之服务远程调用
java·开发语言·spring cloud
努力努力再努力wz1 小时前
【CUDA入门系列】CUDA编程实战:设备选择、显存管理、Kernel、Stream 与 Event 全流程梳理
开发语言·c++
杨丰玮4181 小时前
C语言核心语法
java·c语言·开发语言·学习方法
ttwuai1 小时前
Go开源后台管理系统推荐:README、源码和License应该怎么验
开发语言·golang·开源
Java后端的Ai之路2 小时前
Python 进阶探索30 - Python中的装饰器
开发语言·人工智能·python·文件处理·装饰器模式