双端队列(deque)是什么

双端队列(deque)是一种随机访问的数据类型,提供了在序列两端快速插入和删除的功能,deque类似于vector,

双端队列(deque)属于STL(Standard Template Library, 标准模板库)所以使用的也是也是需要先引入: #include <deque>

双端队列(deque)的初始化

#include <iostream>
#include <string>
using namespace std;
#include <deque>int main()
{// 创建一个空的双端队列deque<int> a;cout << a.size() << endl;// 创建一个10个元素对象deque<int> b(10);// 创建5个元素且5个元素都为明天cout << b.size() << endl;deque<string> c(5, "明天");for (int i = 0; i < b.size(); i++){cout << c[i] << endl;}return 0;
}

双端队列(deque)与向量(vector)比较

双端队列(deque)与向量(vector)多了可在两端进行push、pop但是缺点是占用内存多
     (1)如果你需要高效的随即存取,而不在乎插入和删除的效率,使用vector
     (2)如果你需要大量的插入和删除,而不关心随机存取,则应使用list
     (3)如果你需要随机存取,而且关心两端数据的插入和删除,则应使用deque

双端队列(deque)方法说明

函数 说明
assign(first,last) 用迭代器first和last所在元素替换双端队列元素
assign(num,val) 用val的num个副本替换双端队列元素
at(n) 返回双端队列中第n个位置元素的值
begin 双端队列中第一个元素的引用
back 双端队列中最后一个元素的引用
size 返回双端队列的个数
front 获取双端队列中第一个元素
end 获取双端队列中最后一个元素
empty 判断双端队列是否为空,为空返回true
clear 清空双端队列元素
pop_back 删除双端队列中最后一个元素
pop_front 删除双端队列中第一个元素
rbegin 返回一个反向迭代器,指向双端队列末尾元素之后
rend 返回一个反向迭代器,指向双端队列起始元素
erase(i) 删除第i位置的元素(注意不能直接为数组,需要用begin或者end)
erase(start,end)

删除指定的元素返回,注意是前包含后不包含,里面不能是数字

insert(i,x) 把 i 插入到x位置
insert(i,x,y) 把 i 插入到x到y 的位置
swap 与另一个vector交换数据

demo 练习

#include <iostream>
#include <string>
using namespace std;
#include <deque>int main()
{// 声明一个string 类型的dequedeque<string> ve;// 获取默认deque的sizecout << ve.size() << endl;//在末尾位置添加元素ve.push_back("赵");ve.push_back("钱");ve.push_back("孙");ve.push_back("李");// 获取deque的sizecout << ve.size() << endl;// 开始的位置插入元素ve.insert(ve.begin(),"百家姓:");// 结束的位置插入元素ve.insert(ve.end(),"ok");//删除指定的元素返回,注意是前包含后不包含,里面不能是数字,// ve.erase(ve.begin(),ve.begin()+2);// 删除第二个deque元素ve.erase(ve.begin()+1);//删除最后一个元素ve.pop_back();// for遍历deque的元素for (int i = 0; i < ve.size(); i++){cout << ve[i] << endl;     }//使用迭代器遍历元素for(deque<string>::iterator it=ve.begin();it!=ve.end();it++){cout<<*it<<endl;}// 获取deque第一个元素cout << ve.front() << endl;// 获取deque最后一个元素cout << ve.back() << endl;//获取第3个位置的元素cout << ve.at(2) << endl;// deque判空if (ve.empty()){cout << "ve为空" << endl;}else{cout << "ve不为空" << endl;}// 清空dequeve.clear();return 0;
}

C++ 双端队列(deque)的使用相关推荐

  1. c++ 双端队列 deque 之 (头部、尾部)插入元素/删除元素/

    头文件     #include <deque> 和vector用法基本相同 没有 capacity() reserve() 有了push_back(),pop_back() //inse ...

  2. 6-5-2:STL之stack和queue——双端队列deque

    文章目录 双端队列-deque 双端队列-deque deque是一种双向开口的连续线性空间.所谓双向开口,意思就是可以在头尾两端分别进行元素的插入和删除操作 deque的出现是为了解决融合vecto ...

  3. [转载] Python的双端队列deque

    参考链接: Python中的双端队列DeQue Python的强大并不在于它的语法,而在于它的库,当你对各种数据结构感到苦恼时,Python提供了各种开箱即用的数据结构. 数据结构中最常讲授的数据结构 ...

  4. 队列(queue)与双端队列(deque)—Python实现方法及回文词应用

    队列 Queue 抽象数据类型Queue:一个有次序的数据集合,数据项仅从 尾(rear) 端添加,且仅从 首(front) 端移除,具有 "FIFO" 的特点. 需要实现的操作: ...

  5. STL之双端队列deque:新手入门,基础应用

    STL之双端队列deque:新手入门,基础应用 简单的自我介绍 STL之deque:基本函数的运用 源代码 运行结果 结尾 简单的自我介绍 一名努力学习code的计算机专业大二在校学生,平时不论是完成 ...

  6. 【C++】STL常用容器总结之五:双端队列deque

    6.双端队列deque 所谓的deque是"double ended queue"的缩写,双端队列不论在尾部或头部插入元素,都十分迅速.而在中间插入元素则会比较费时,因为必须移动中 ...

  7. java lifo 队列_1.8 Java 队列 Queue、双端队列 Deque - Java 知识总结与学习

    queue 在java5中新增加了java.util.Queue接口,用以支持队列的常见操作.该接口扩展了java.util.Collection接口.除了基本的 Collection 操作外,队列还 ...

  8. Java双端队列Deque及其应用

    目录 1.Deque的概念 2.双端队列操作 3.双端队列演示示例 4.双端队列典型应用(滑动窗口/单调栈问题) 1.Deque的概念 双向队列:支持在首尾插入和删除元素的线性集合.它具有既具有FIF ...

  9. C++ 双端队列deque

    双端队列的简单认识 双端队列是动态大小的序列式容器,其可以像两端进行伸缩. 特定的库可以以不同的方式实现deque,但通常都是一种动态数组.不论在何种情况下,它都允许通过随机访问迭代器直接访问单个元素 ...

最新文章

  1. Lua截取utf-8编码的中英文混合字符串
  2. 计算机jsp外文文献,计算机 JSP web 外文翻译 外文文献 英文文献.doc
  3. Golang 入门笔记(一)
  4. C语言结构体使用与指针的理解
  5. 带你认识传统语音识别技术
  6. Go官方库RPC开发指南
  7. Mac上最好用的HTML文本编辑器BBEdit下载安装教程
  8. Realsense D455 修改分辨率和FPS
  9. Ajax方法实现登录页面
  10. 微信小程序授权登录(获取微信头像并显示)
  11. win10计算机护眼,win10系统设置护眼模式的三种方法
  12. python金融编程入门_python金融实务从入门到精通完整版
  13. VmWare16 安装图解
  14. 怎么知道云服务器cpu型号,云服务器cpu怎么查看
  15. BOS金蝶云星空开发简单账表
  16. 斐波那契问题(兔子问题)
  17. C# 打印调试信息到DebugView
  18. java xmap_使用XMAP完成JavaBean和XML之间转换
  19. win7 本地连接共享无线网络(即两网卡共享)
  20. 绘制蛋白-配体2D相互作用工具汇总

热门文章

  1. 2022-2028年中国中空玻璃聚硫密封胶行业市场研究及前瞻分析报告
  2. 第五周周记(国庆第七天)
  3. 如何构建虚拟护士应用程序?
  4. 推荐系统的个性化排名
  5. 2021年大数据HBase(八):Apache Phoenix的基本介绍
  6. 【CV】Pytorch一小时入门教程-代码详解
  7. 员工信息管理系统java6_职工信息管理系统java源代码【可修改】.doc
  8. xlrd.biffh.XLRDError: Excel xlsx file; not supported
  9. Android 动画 ViewPropertyAnimator 的使用
  10. Android 实现一个验证码倒计时(Handler postDelayed 实现验证码倒计时)