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

C++ deque双端队列、deque对象创建、deque赋值操作

在deque中,front()是头部元素,back()指的是尾部元素。begin()是指向头部的迭代器,end()是指向尾部的下一个元素的迭代器。

push_front 头部进行插入

pop_front 尾部进行删除

push_back 尾部进行插入

pop_back 尾部进行删除

deque如果同时进行头插和尾插的话,他的时间复杂度是o(1),如果是vector的话,时间复杂度是o(n),需要视情况进行选择进行插入。如果是只有一个单向插法的话,用vector就可以。如果是两种插入的方式的话,用deque就合适。

deque对象创建,代码见下:

#include<iostream>
#include<deque>using namespace std;void printDeque(deque<int> &d) {for (deque<int>::iterator iter = d.begin(); iter != d.end(); iter++) {cout << *iter << " ";}cout << endl;
}int main() {// 1 默认构造函数deque<int> q1;cout << "d1: ";printDeque(q1);// 2 初始化列表deque<int> d2_1({ 9, 8, 8, 6, 5 });cout << "d2_1: ";printDeque(d2_1);deque<int> d2_2 = { 1, 8, 8, 8, 5};cout << "d2_2: ";printDeque(d2_2);// 3 迭代器deque<int> d3(d2_2.begin()+1, d2_2.end()-1);cout << "d3: ";printDeque(d3);// 4 全0初始化deque<int> d4(10);cout << "d4: ";printDeque(d4);// 5 deque<int> 变量名(a, b),代表申请了a个空间,初始化值为bdeque<int> d5(8, 6);cout << "d5: ";printDeque(d5);// 6 拷贝构造函数deque<int> d6(d5);cout << "d6: ";printDeque(d6);return 0;}

deque赋值操作,代码见下:

#include<iostream>
#include<deque>using namespace std;void printDeque(deque<int> &d) {for (deque<int>::iterator iter = d.begin(); iter != d.end(); iter++) {cout << *iter << " ";}cout << endl;
}int main() {deque<int> d = { 9, 8, 5, 2, 1, 1 };cout << "d: ";printDeque(d);// 1 =赋值deque<int> d1;d1 = d;cout << "d1: ";printDeque(d1);// 2 assign(迭代器)deque<int> d2;d2.assign(d1.begin() + 1, d1.end());cout << "d2: ";printDeque(d2);// 3 初始化列表deque<int> d3;d3.assign({ 1, 2, 3, 5, 6, 7 });cout << "d3: ";printDeque(d3);// 4 初始化a个bdeque<int> d4;d4.assign(8, 6);cout << "d4: ";printDeque(d4);return 0;}

相关文章:

  • 软件设计师教程—— 第二章 程序设计语言基础知识(上)
  • DeepSeek指令微调与强化学习对齐:从SFT到RLHF
  • 【Linux笔记】——Linux线程封装
  • Transformer 架构在目标检测中的应用:YOLO 系列模型解析
  • 进阶-数据结构部分:3、常用查找算法
  • [Windows] 系统综合优化工具 RyTuneX 1.3.1
  • 最小二乘法拟合平面(线性回归法、梯度下降、PCA法)
  • 2025年PMP 学习十七 第11章 项目风险管理 (11.1~11.4)
  • GitHub文档加载器设计与实现
  • mAP、AP50、AR50:目标检测中的核心评价指标解析
  • 如何分析动态采样引起的计划不稳定 | OceanBase SQL 调优实践
  • MODBUS RTU通信协议详解与调试指南
  • 建筑兔零基础人工智能自学记录94|模式识别(上)-9
  • 在Maven中替换文件内容的插件和方法
  • 深入解析Spring Boot与JUnit 5的集成测试实践
  • Git 多人协作
  • pip升级或者安装报错怎么办?
  • 每日算法刷题Day9 5.17:leetcode定长滑动窗口3道题,用时1h
  • 数据库原理及其应用 第六次作业
  • printf耗时高的原因
  • 法律顾问被控配合他人诈骗酒店资产一审判8年,二审辩称无罪
  • 终于,俄罗斯和乌克兰谈上了
  • 小雨伞保险经纪母公司手回集团通过港交所聆讯
  • 李公明︱一周书记:当前科学观中的盲点、危机与……人类命运
  • 山东:小伙为救同学耽误考试属实,启用副题安排考试
  • “一码难求”的Manus开放注册但价格不菲,智能体距离“实用”还有多远