C++deque介绍
deque是一个双向队列,优化了对序列两端元素进行添加和删除操作的基本序列容器。通常由一些独立的区块组成,第一个区块朝某方向发展,最后一个区块朝另一个方向发展。它允许较为快速地随机访问但它不像vector一样把所有对象保存在一个连续的内存块,而是多个连续的内存块。并且在一个映射结构中保存对这些块以及顺序的跟踪。
deque的特点:
1、支持随机访问,即支持[]以及at(),但是性能没有vector好
2、可以在内部进行插入和删除操作,但性能不及list。
deque和vector的不同之处:
1、deque两端都能够快速的插入和删除元素。vector只能在尾端进行。
2、deque的元素存取和迭代器操作会稍微慢一些。因为deque的内部结构会多一个简介过程。
3、迭代器时特殊的智能指针,而不是一般指针。它需要在不同的区块之间跳转。
4、deque可以包含更多的元素,其max_size可能更大。因为不止使用一块内存。
5、不支持对容量和内存分配时机的控制。
容器的选择:
1、强调快速随机访问,则vector比list好得多。
2、已知要存储元素的个数。vector好于list。
3、强调增删且不要在两端插入修改元素,则list显然要比vector好。
4、除非我们需要在容器首部插入和删除元素,deque好于vector。
实例:
插入操作:
deque<string> dec;
dec.push_back("hello"); //尾部插入
dec.push_front("world"); //头部插入
//insert操作
//iterator insert (iterator position, const value_type& val);
dec.insert(dec.end(), "aaaaaa");
//void insert (iterator position, size_type n, const value_type& val);
dec.insert(dec.end(), 5, "bbb");
//void insert (iterator position, InputIterator first, InputIterator last);
deque<string> t_dec(2,"ccc");
dec.insert(dec.end(), t_dec.begin(), t_dec.end());
删除操作:
dec.pop_back(); //尾部删除
dec.pop_front(); //头部删除//erase操作
//iterator erase (iterator position);
dec.erase(dec.begin());
//iterator erase (iterator first, iterator last);
dec.erase(dec.end()-3, dec.end());
//删除指定元素
deque<string>::iterator iter;
for(iter = dec.begin(); iter != dec.end(); )
{if(*iter == "bbb"){iter = dec.erase(iter);}else{++iter;}
}
dec.back(); //返回最后一个元素
dec.front(); //返回第一个元素
dec.empty(); //判断是否为空//调整容器大小,不足以参数2补充
dec.resize(5);
dec.resize(5,"hello");dec.size(); //容器大小
deque<string> s_dec;
swap(s_dec, dec); //交换容器内容
s_dec.swap(dec); //交换容器内容
dec.clear(); //清空
//反序输出
deque<string>::reverse_iterator rit;
for(rit = dec.rbegin(); rit != dec.rend(); ++rit)
{cout<<*rit<<endl;
}
参考:
https://blog.csdn.net/xiajun07061225/article/details/7442816
https://www.cnblogs.com/engineerLF/p/5393006.html
http://www.cplusplus.com/reference/deque/deque/
C++deque介绍相关推荐
- [C++](13)stack queue priority_queue 模拟实现:容器适配器,deque介绍,仿函数详解
文章目录 使用 stack 栈 queue 队列 priority_queue 优先级队列 什么是容器适配器? deque 容器简单介绍 模拟实现 stack queue priority_queue ...
- STL的Deque介绍
Deque是双端队列,在画动态图表的时候使用起来比较方便.因为当数据填满图表后,需要从队列的后方插入一个元素,然后再从队列的前方删除一个元素.使用Deque可以很方便的做到.使用push(pop)-b ...
- C++小工进阶之路 XV(list总结以及deque介绍)
在list类中,因为list底层使用的是带头结点的双向循环链表,所以list这个容器的迭代器既有++操作,又有--操 作,但是对于forward list来时底层是单链表,所以模拟实现的时候只有迭代器 ...
- python collections 模块中的 deque
collections.deque介绍 collections 是 python 内建的一个集合模块,里面封装了许多集合类,其中队列相关的集合只有一个:deque. deque 是双边队列(doubl ...
- python队列(deque)
collections.deque介绍 collections 是 python 内建的一个集合模块,里面封装了许多集合类,其中队列相关的集合只有一个:deque. deque 是双边队列(doubl ...
- C++常用STL库详细总结
C++STL库函数总结 #include< algorithm >库函数 1.sort排序 2.reverse倒转 3.unique去重 4.二分查找 5.find函数查找 6.字符串和整 ...
- 竞赛中的STL库函数使用
简单的介绍一下STL的用法 看起来内容很多 只要遇到对应的题写个几题 很容易就熟能生巧了 为何cpp是竞赛使用最为广泛的语言呢 1 速度快 2 STL强大 因此掌握好STL 一定能让你做题的效率更上一 ...
- Python deque的用法介绍
Python deque的用法介绍 deque 是Python标准库 collections 中的一个类,实现了两端都可以操作的队列,相当于双端队列,与Python的基本数据类型列表很相似. Pyth ...
- [C++STL]deque容器用法介绍
代码如下: #include <iostream> #include <string> #include <deque> using namespace std;v ...
最新文章
- BZOJ4237 JOISC2014 稻草人 CDQ分治、单调栈
- fc-ae-1553_什么是AE-L,AF-L和*按钮,它们的作用是什么?
- 求求你把输入法调小一点... | 今日最佳
- ACL'21 | 弱标签的垃圾数据,也能变废为宝!
- Problem C: 判断字符串是否为回文
- 数据库索引统计信息不一致_列存储索引增强功能–克隆数据库中的索引统计信息更新
- LVS小型系统架构搭建笔记
- 窗口潜水面罩行业调研报告 - 市场现状分析与发展前景预测(2021-2027年)
- linux系统里route -n不起作用,Linux系统中traceroute命令使用详解
- localhost:8080
- 查看电脑是否开启虚拟化
- java中String转Long类型
- codeblocks不支持16位,与64位不兼容这个问题
- 网络安全与计算机信息管理论文,计算机信息管理技术在网络安全的应用论文
- IBM面试题:海盗分金算法及其思想
- 禅道 php7.1,Centos7安装PHP7 + 禅道(Nginx 1.18 + PHP7.2)
- 「开发者说」多系统集成开发-企业自有系统快速上钉钉
- 6_计算机网络_应用层-HTTP-DNS-跳板机
- springboot下配置druid监控
- 水果店微信小程序开发_分享水果店做微信小程序的好处
热门文章
- 【ZT】诺亚34亿爆雷,到底谁在说谎?(双录)
- linux传统方式挂载新硬盘并进行分区格式化
- 移动端mobiscroll时间控件的使用
- 系列三、机械键盘(IKBC)Win + [D/E]等快捷建失效
- QT应用编程:基于VLC开发音视频播放器(回调方式)
- 计算机毕业设计 - ssm+vue大学生在线兼职发布与管理平台(源码+论文)
- 【01】一起学ASP之《ASP.NET MVC企业级实战》
- java console清屏_JAVA 控制台清屏 | 学步园
- 代码随想录刷题|LeetCode 1049. 最后一块石头的重量II 494. 目标和 474.一和零
- 青岛旅游学校计算机证书,【我和我的旅校】青岛旅游学校优秀毕业生——王子然...