当前位置: 首页 > news >正文

C++(8): std::deque的使用

1. std::deque

std::deque 是 C++ 标准库中的一个双端队列容器。这个容器支持在序列的两端进行快速的插入和删除操作,其时间复杂度为常数时间 O(1)。同时,std::deque 也提供了对序列中任意元素的随机访问。

2. 特点

(1)双端操作:在序列的开始和结束都可以进行元素的插入和删除操作。

(2)随机访问:可以使用下标操作符 [] 或 at() 方法来访问队列中的任意元素。

(3)动态大小:std::deque 可以根据需要动态地增长或缩小。

3. 基本用法

(1)声明std::deque

#include <deque>
std::deque<int> myDeque;

(2)插入元素

/** 在末尾插入 */myDeque.push_back(10);/** 在开头插入 */myDeque.push_front(20);/** 在特定位置插入 */myDeque.insert(myDeque.begin() + 1, 30);

(3)删除元素

/** 删除末尾元素 */myDeque.pop_back();/** 删除开头元素 */myDeque.pop_front();/** 删除特定位置的元素 */auto it = myDeque.begin();it++; ///< 移动到第一个元素myDeque.erase(it); ///< 删除当前指向的元素

(4)遍历所有元素

for (auto it = myDeque.begin(); it != myDeque.end(); ++it) {std::cout << *it << std::endl;}

4. 例程

#include <iostream>#include <deque>int main() {std::deque<int> numbers;/** 插入元素 */numbers.push_back(5);numbers.push_back(10);numbers.push_front(3);/** 遍历并打印元素 */std::cout << "Deque before modification: ";for (int num : numbers) {std::cout << num << " ";}std::cout << std::endl;/** 在中间插入元素 */numbers.insert(numbers.begin() + 1, 7);/** 删除开头元素 */numbers.pop_front();/** 再次遍历并打印元素 */std::cout << "Deque after modification: ";for (int num : numbers) {std::cout << num << " ";}std::cout << std::endl;return 0;}

相关文章:

  • Appium设备交互API
  • Hbase常用命令选择题
  • 【JavaSE】一维数组和二维数组详解
  • 小工具实战-Python实现小工具输出字符串大小写转换、字符串统计、编解码、MD5加密
  • Spring日志框架
  • 七、其它线性 DP
  • Git,GitHub,Gitee,GitLab 四者有什么区别?
  • 9.用FFmpeg测试H.264文件的解码时间
  • c入门基础题(2)
  • 编译器特性..
  • 多叉树题目:N 叉树的最大深度
  • C++教学——从入门到精通 5.单精度实数float
  • ArcGIS支持下SWAT与CENTURY模型的结合:流域水碳氮综合模拟
  • 【React】onClick点击事件传参的4种方式
  • 2024年美团笔试题(1)
  • 【Redis学习笔记】2018-06-28 redis命令源码学习1
  • 【笔记】你不知道的JS读书笔记——Promise
  • Android 架构优化~MVP 架构改造
  • C++回声服务器_9-epoll边缘触发模式版本服务器
  • CSS进阶篇--用CSS开启硬件加速来提高网站性能
  • C语言笔记(第一章:C语言编程)
  • Git初体验
  • vue总结
  • 分类模型——Logistics Regression
  • 机器学习中为什么要做归一化normalization
  • 类orAPI - 收藏集 - 掘金
  • 无服务器化是企业 IT 架构的未来吗?
  • 最近的计划
  • 阿里云服务器购买完整流程
  • ​ 无限可能性的探索:Amazon Lightsail轻量应用服务器引领数字化时代创新发展
  • ​520就是要宠粉,你的心头书我买单
  • "无招胜有招"nbsp;史上最全的互…
  • #NOIP 2014#day.2 T1 无限网络发射器选址
  • #我与Java虚拟机的故事#连载06:收获颇多的经典之作
  • $ is not function   和JQUERY 命名 冲突的解说 Jquer问题 (
  • $.ajax,axios,fetch三种ajax请求的区别
  • (13)Hive调优——动态分区导致的小文件问题
  • (c语言版)滑动窗口 给定一个字符串,只包含字母和数字,按要求找出字符串中的最长(连续)子串的长度
  • (function(){})()的分步解析
  • (动手学习深度学习)第13章 计算机视觉---图像增广与微调
  • (六)软件测试分工
  • (原)本想说脏话,奈何已放下
  • (转) RFS+AutoItLibrary测试web对话框
  • (转)visual stdio 书签功能介绍
  • (转)可以带来幸福的一本书
  • @manytomany 保存后数据被删除_[Windows] 数据恢复软件RStudio v8.14.179675 便携特别版...
  • @property @synthesize @dynamic 及相关属性作用探究
  • @RequestParam @RequestBody @PathVariable 等参数绑定注解详解
  • [20161101]rman备份与数据文件变化7.txt
  • [Android]使用Git将项目提交到GitHub
  • [Big Data - Kafka] kafka学习笔记:知识点整理
  • [Google Guava] 2.1-不可变集合
  • [HTML]Web前端开发技术30(HTML5、CSS3、JavaScript )JavaScript基础——喵喵画网页
  • [JS入门到进阶] 7条关于 async await 的使用口诀,新学 async await?背10遍,以后要考!快收藏
  • [LitCTF 2023]Http pro max plus