STL之deque 【双端队列】

news/2024/11/29 20:41:56/

这里写目录标题

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


http://www.ppmy.cn/news/1325074.html

相关文章

【前后端的那些事】15min快速实现图片上传,预览功能(ElementPlus+Springboot)

文章目录 Element Plus SpringBoot实现图片上传&#xff0c;预览&#xff0c;删除效果展示 1. 后端代码1.1 controller1.2 service 2. 前端代码2.1 路由创建2.2 api接口2.2 文件创建 3. 前端上传组件封装 前言&#xff1a;最近写项目&#xff0c;发现了一些很有意思的功能&…

噪声的产生机制和来源

噪声广泛存&#xff0c;噪声按照噪声携带能量的强弱分为功率型噪声和信号型噪声&#xff0c;功率型噪声持续时间短&#xff0c;能量强&#xff0c;对设备的寿命具有很大的影响&#xff0c;而信号型噪声顾名思义来源于信号且作用于信号&#xff0c;本节简述噪声的产生机理和来源…

系分备考计算机网络传输介质、通信方式和交换方式

文章目录 1、概述2、传输介质3、网络通信4、网络交换5、总结 1、概述 计算机网路是系统分析师考试的常考知识点&#xff0c;本篇主要记录了知识点&#xff1a;网络传输介质、网络通信和数据交换方式等。 2、传输介质 网络的传输最常见的就是网线&#xff0c;也就是双绞线&…

canvas绘制不同样式的六角星(示例源代码)

查看专栏目录 canvas实例应用100专栏&#xff0c;提供canvas的基础知识&#xff0c;高级动画&#xff0c;相关应用扩展等信息。canvas作为html的一部分&#xff0c;是图像图标地图可视化的一个重要的基础&#xff0c;学好了canvas&#xff0c;在其他的一些应用上将会起到非常重…

国产阿里的Copilot能提效30%吗?

国产阿里的Copilot能提效30%吗&#xff1f; Copilot简介 GitHub 和 OpenAI 共同打造的一款编程神器–Copilot&#xff0c; 这是一款立足于人工智能技术的编程助手。在此基础上&#xff0c;借助于 GitHub 庞大的代码库和来自全球的开源社区帮助&#xff0c;搭配 OpenAI 在自然…

【经典算法】有趣的算法之---粒子群算法梳理

every blog every motto: You can do more than you think. https://blog.csdn.net/weixin_39190382?typeblog 0. 前言 粒子群算法 粒子群算法&#xff08;Particle Swarm Optimization&#xff0c;PSO&#xff09;是一种用于解决优化问题的元启发式算法。它通过模拟鸟群或…

RabbitMQ 部署与配置[CentOS7]

# RabbitMQ,Erlang 版本包对应 https://rabbitmq.com/which-erlang.html#eol-seriescd /usr/local/src# Erlang下载 # https://github.com/rabbitmq/erlang-rpm/releases https://github.com/rabbitmq/erlang-rpm/releases/download/v23.3.4.5/erlang-23.3.4.5-1.el7.x86_64.rp…

[系统安全] 五十四.恶意软件分析 (6)PE文件解析及利用Python获取样本时间戳

您可能之前看到过我写的类似文章,为什么还要重复撰写呢?只是想更好地帮助初学者了解病毒逆向分析和系统安全,更加成体系且不破坏之前的系列。因此,我重新开设了这个专栏,准备系统整理和深入学习系统安全、逆向分析和恶意代码检测,“系统安全”系列文章会更加聚焦,更加系…