STL之deque 【双端队列】

这篇具有很好参考价值的文章主要介绍了STL之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的用法。关注我,为大家持续分享更多的内容,让学习变得更简单,与君共勉,共同成长。文章来源地址https://www.toymoban.com/news/detail-805097.html

到了这里,关于STL之deque 【双端队列】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【C++】STL之适配器---用deque实现栈和队列

    目录 前言 一、deque  1、deque 的原理介绍  2、deque 的底层结构  3、deque 的迭代器  4、deque 的优缺点   4.1、优点   4.2、缺点 二、stack 的介绍和使用  1、stack 的介绍  2、stack 的使用  3、stack 的模拟实现 三、queue 的介绍和使用  1、queue 的介绍   2、queue 的使用  3、queue 的模

    2024年02月07日
    浏览(51)
  • [C++] STL_priority_queue(优先级队列) 的使用及底层的模拟实现,容器适配器,deque的原理介绍

    priority_queue文档介绍 翻译: 1. 优先队列是一种 容器适配器 ,根据严格的弱排序标准, 它的第一个元素总是它所包含的元素中最大的。 2. 此上下文类似于 堆 , 在堆中可以随时插入元素,并且只能检索最大堆元素(优先队列中位于顶部的元素)。 3. 优先队列被实现为容器适配

    2024年02月04日
    浏览(40)
  • 双端队列deque(C++)

    栗酱有一天在网上冲浪的时候发现了一道很有意思的数据结构题。 该数据结构形如长条形。 一开始该容器为空,有以下七种操作。 1 a从前面插入元素a 2 从前面删除一个元素 3 a从后面插入一个元素 4 从后面删除一个元素 5 将整个容器头尾翻转 6 输出个数和所有元素 7 对所有

    2024年02月11日
    浏览(41)
  • 华为OD机试 - 最差产品奖 - 双端队列 deque(Java 2023 B卷 200分)

    华为OD机试 2023B卷题库疯狂收录中,刷题 点这里 本专栏收录于

    2024年02月09日
    浏览(40)
  • C++STL——deque容器详解

    纵有疾风起,人生不言弃。本文篇幅较长,如有错误请不吝赐教,感谢支持。 vector容器是单向开口的连续内存空间,deque([\\\'dek])则是一种双向开口的连续线性空间。所谓的双向开口,意思是可以在头尾两端分别做元素的插入和删除操作,可以理解为数据结构的双端队列。当

    2024年02月12日
    浏览(30)
  • 【C++入门到精通】C++入门 —— deque(STL)

    文章绑定了VS平台下std::deque的源码,大家可以下载了解一下😍 前面我们讲了C语言的基础知识,也了解了一些数据结构,并且讲了有关C++的命名空间的一些知识点以及关于C++的缺省参数、函数重载,引用 和 内联函数也认识了什么是类和对象以及怎么去new一个 ‘对象’ ,以及

    2024年02月12日
    浏览(42)
  • C++ STL之 queue和deque用法详解

    1.1 创建queue对象: queue数据类型,容器类型 q; 数据类型:可以是int、double等基本类型,也可以是自定义的结构体。 容器类型:一般为deque或者list(双向链表),可省略,省略时以deque为默认容器。 声明代码如下: 只能队尾插入,队首弹出。无法index遍历,也不可以迭代器遍

    2023年04月10日
    浏览(34)
  • STL stack,queue,deque以及适配器

    下面是stack库中的接口函数,有了前面的基础,我们可以根据函数名得知函数的作用 函数 说明 stack() 构造空栈 empty() 判断栈是否为空 size() 返回栈中元素个数 top 返回栈顶元素 push() 将值从栈顶压入栈内 pop() 在栈顶出栈 栈其实就是一种特殊的 vector ,因此可以使用 vector 模拟实

    2024年02月10日
    浏览(38)
  • C++ STL第三篇(搞清楚deque原理和有多少用法)

    Vector容器是单向开口的连续内存空间,deque则是一种双向开口的连续线性空间。所谓的双向开口,意思是可以在头尾两端分别做元素的插入和删除操作,当然,vector容器也可以在头尾两端插入元素,但是在其头部操作效率奇差,无法被接受。 Deque容器和vector容器最大的差异,

    2024年03月17日
    浏览(35)
  • C++高级编程——STL:deque容器、stack容器和queue容器

    本专栏记录C++学习过程包括C++基础以及数据结构和算法,其中第一部分计划时间一个月,主要跟着黑马视频教程,学习路线如下, 不定时更新,欢迎关注 。 当前章节处于: ---------第1阶段-C++基础入门 ---------第2阶段实战-通讯录管理系统, ---------第3阶段-C++核心编程, -----

    2024年01月24日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包