C++STL-deque

一.基础概念

deque和vector一样都是对元素的操作,**不同点:**vector对元素增删后元素会往前或往后移,如果数据不大没有太多影响,如果数据很大效率会变低;deque对元素增删不会使元素位置改变,所有效率会变高。

二.基本用法

1.deque对象创建

|----------------------------------------------------|------------------------------------------------------------------------|
| 1. 默认构造函数 | deque<int> d1; |
| 2. 初始化列表 | deque<int> d2_1({ 9,8,8,6, 5 }); deque<int> d2_2 = { 1,8,8,8, 5 }; |
| 3. 迭代器 | deque<int> d3(d2_1.begin()+1, d2_1.end()-1); |
| 4. 全0初始化 | deque<int> d4(10); |
| 5. deque<int> 变量名(a,b) 代表申请a个元素空间,每个元素的值初始化b | deque<int> d5(8, 6); |
| 6. 拷贝构造函数 | deque<int> d6(d5); |

2.deque赋值操作

|--------------------|-----------------------------------------------------|
| | deque<int> d = { 9,8,5,2,1,1 }; |
| 1. = 赋值 | deque<int> d1; d1 = d; |
| 2. assign(迭代器) | deque<int> d2; d2.assign(d1.begin()+1, d1.end()); |
| 3. 初始化列表 | deque<int> d3; d3.assign({ 1,2,3,5,6,7 }); |
| 4. 初始化 a 个 b | deque<int> d4; d4.assign(8, 6); |

3.deque大小操作

|-----------------------------------|--------------------------------------------------------|
| 1.empty,判断是否为空,如果是空返回1,不为空返回0 | deque<int> d; d.empty() |
| 2.size,元素个数 | d.size() |
| 3.resize,扩容处理 | d.resize(18);//扩容到18个 d.resize(20, 6);//扩容到20个,多余全部变成6 |

4.deque数据插入

|------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------|
| 1、push_front | d.push_front(-1); |
| 2、push_back | d.push_back(1); |
| 3、insert | d.insert(d.begin() + 3, 0);//第3个位置插0 d.insert(d.end() - 1, 5, 8);//在倒数第二个位置插5个8 d.insert(d.begin() + 1, d.begin() + 4, d.begin() + 6);//在第二个位置插入4-6位置元素 |

5.deque数据删除

|------------------|---------------------------------------------------------------------------------|
| 1、pop_front | d.pop_front(); |
| 2、pop_back | d.pop_back(); |
| 3、erase | d.erase(d.begin() + 2)//删除第2个元素 d.erase(d.begin() + 1, d.begin() + 3);//删除2-3元素 |
| 4.clear,全部删除 | d.clear(); |

6.deque数据访问

|-----------|---------|
| d2 | 和数组访问一样 |
| d.at(2) | 和数组访问一样 |
| d.front() | |
| d.back() | |

相关推荐
h39744 小时前
DirectShow过滤器开发-视频源过滤器
c++·windows·音视频·directshow
夏幻灵5 小时前
JavaScript this 面试:五种绑定规则、优先级与常见面试陷阱
开发语言·javascript·面试
程序猿编码5 小时前
榨干 RTX5090 算力!Qwen3 专用单卡推理引擎,手写C++/CUDA 算子实现 MTP 推测解码
开发语言·c++·大模型推理·qwen3·多模态推理
西飘客6 小时前
vs 怎么根据dll 生成lib文件
c++·qt
bkspiderx7 小时前
Qt 插件机制:动态扩展应用功能的核心框架
开发语言·qt·元数据·qt 插件·qpluginloader
程序员老陆7 小时前
深入理解 C++ thread_local:线程私有存储的正确打开方式
开发语言·c++·程序设计
沐晓时光7 小时前
C语言入门,深入理解指针(3)
c语言·开发语言
码云数智-园园8 小时前
unique_ptr 还是 shared_ptr?C++ 智能指针选型与内存泄漏实战分析
java·开发语言
禾小西8 小时前
07丨Redis 哨兵机制:主库故障后,如何恢复服务?
java·开发语言·redis
我不是阵雨9 小时前
JDK 21虚拟线程Pinning陷阱:一文拔钉解困
java·开发语言