C++ 双端队列(deque)的使用
双端队列(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)的使用相关推荐
- c++ 双端队列 deque 之 (头部、尾部)插入元素/删除元素/
头文件 #include <deque> 和vector用法基本相同 没有 capacity() reserve() 有了push_back(),pop_back() //inse ...
- 6-5-2:STL之stack和queue——双端队列deque
文章目录 双端队列-deque 双端队列-deque deque是一种双向开口的连续线性空间.所谓双向开口,意思就是可以在头尾两端分别进行元素的插入和删除操作 deque的出现是为了解决融合vecto ...
- [转载] Python的双端队列deque
参考链接: Python中的双端队列DeQue Python的强大并不在于它的语法,而在于它的库,当你对各种数据结构感到苦恼时,Python提供了各种开箱即用的数据结构. 数据结构中最常讲授的数据结构 ...
- 队列(queue)与双端队列(deque)—Python实现方法及回文词应用
队列 Queue 抽象数据类型Queue:一个有次序的数据集合,数据项仅从 尾(rear) 端添加,且仅从 首(front) 端移除,具有 "FIFO" 的特点. 需要实现的操作: ...
- STL之双端队列deque:新手入门,基础应用
STL之双端队列deque:新手入门,基础应用 简单的自我介绍 STL之deque:基本函数的运用 源代码 运行结果 结尾 简单的自我介绍 一名努力学习code的计算机专业大二在校学生,平时不论是完成 ...
- 【C++】STL常用容器总结之五:双端队列deque
6.双端队列deque 所谓的deque是"double ended queue"的缩写,双端队列不论在尾部或头部插入元素,都十分迅速.而在中间插入元素则会比较费时,因为必须移动中 ...
- java lifo 队列_1.8 Java 队列 Queue、双端队列 Deque - Java 知识总结与学习
queue 在java5中新增加了java.util.Queue接口,用以支持队列的常见操作.该接口扩展了java.util.Collection接口.除了基本的 Collection 操作外,队列还 ...
- Java双端队列Deque及其应用
目录 1.Deque的概念 2.双端队列操作 3.双端队列演示示例 4.双端队列典型应用(滑动窗口/单调栈问题) 1.Deque的概念 双向队列:支持在首尾插入和删除元素的线性集合.它具有既具有FIF ...
- C++ 双端队列deque
双端队列的简单认识 双端队列是动态大小的序列式容器,其可以像两端进行伸缩. 特定的库可以以不同的方式实现deque,但通常都是一种动态数组.不论在何种情况下,它都允许通过随机访问迭代器直接访问单个元素 ...
最新文章
- Lua截取utf-8编码的中英文混合字符串
- 计算机jsp外文文献,计算机 JSP web 外文翻译 外文文献 英文文献.doc
- Golang 入门笔记(一)
- C语言结构体使用与指针的理解
- 带你认识传统语音识别技术
- Go官方库RPC开发指南
- Mac上最好用的HTML文本编辑器BBEdit下载安装教程
- Realsense D455 修改分辨率和FPS
- Ajax方法实现登录页面
- 微信小程序授权登录(获取微信头像并显示)
- win10计算机护眼,win10系统设置护眼模式的三种方法
- python金融编程入门_python金融实务从入门到精通完整版
- VmWare16 安装图解
- 怎么知道云服务器cpu型号,云服务器cpu怎么查看
- BOS金蝶云星空开发简单账表
- 斐波那契问题(兔子问题)
- C# 打印调试信息到DebugView
- java xmap_使用XMAP完成JavaBean和XML之间转换
- win7 本地连接共享无线网络(即两网卡共享)
- 绘制蛋白-配体2D相互作用工具汇总
热门文章
- 2022-2028年中国中空玻璃聚硫密封胶行业市场研究及前瞻分析报告
- 第五周周记(国庆第七天)
- 如何构建虚拟护士应用程序?
- 推荐系统的个性化排名
- 2021年大数据HBase(八):Apache Phoenix的基本介绍
- 【CV】Pytorch一小时入门教程-代码详解
- 员工信息管理系统java6_职工信息管理系统java源代码【可修改】.doc
- xlrd.biffh.XLRDError: Excel xlsx file; not supported
- Android 动画 ViewPropertyAnimator 的使用
- Android 实现一个验证码倒计时(Handler postDelayed 实现验证码倒计时)