C++ deque详细
时间: 2025-06-10 17:43:53 浏览: 17
### C++ 中 `deque` 容器的详细用法
#### 构造函数
`std::deque` 提供了几种不同的构造方式来创建双端队列对象:
- 默认构造:创建一个空的 `deque`
- 范围构造:从指定范围内的元素初始化一个新的 `deque`
- 填充构造:使用相同值填充的新建 `deque`
- 复制构造:复制另一个现有的 `deque`
```cpp
#include <iostream>
#include <deque>
using namespace std;
void show_deque(const deque<int>& dq) {
for (auto it : dq) cout << it << " ";
cout << endl;
}
int main() {
// 默认构造
deque<int> d1;
// 范围构造
int arr[] = {1, 2, 3};
deque<int> d2(arr, arr + sizeof(arr)/sizeof(int));
// 填充构造
deque<int> d3(5, 7);
// 复制构造
deque<int> d4(d2);
show_deque(d1); // 输出为空
show_deque(d2); // 输出: 1 2 3
show_deque(d3); // 输出: 7 7 7 7 7
show_deque(d4); // 输出: 1 2 3
return 0;
}
```
#### 成员函数概述
##### 插入与删除操作
支持在头部 (`push_front`, `pop_front`) 和尾部 (`push_back`, `pop_back`) 进行高效插入和移除。
```cpp
d.push_front(value); // 在最前面添加新元素
d.pop_front(); // 移除第一个元素
d.push_back(value); // 添加到末尾
d.pop_back(); // 删除最后一个元素
```
##### 访问元素
可以直接通过索引访问元素,类似于数组的方式;也可以利用迭代器遍历整个容器。
```cpp
cout << d[index]; // 获取特定位置上的元素
for(auto& item:d){ // 遍历所有元素
cout<<item<<" ";
}
```
##### 修改容量
可以调整当前存储空间大小而不改变实际内容数量的方法有 `resize()` 函数以及获取当前尺寸的方法如 `size()` 或者判断是否为空 `empty()`.
```cpp
d.resize(new_size); // 改变内部缓冲区长度至 new_size
if(!d.empty()){} // 如果不是空则执行某些逻辑
unsigned long sz = d.size();// 返回现存项目总数目
```
##### 数据交换和其他功能
提供了一键互换两个同类型的 `deque` 的能力以及其他实用工具方法比如清除全部条目的 `clear()` 方法等。
```cpp
another_d.swap(d); // 将 another_d 内容替换掉 d 并反之亦然
d.clear(); // 清理所有的项使它变成空状态
```
---
阅读全文
相关推荐


















