c++ 中deque的用法
时间: 2024-07-07 20:00:49 浏览: 130
在C++中,`deque`(双端队列)是一种动态数组,它提供了在两端高效地插入和删除元素的能力,这使得它非常适合于需要频繁在队列的开始或结尾添加或移除元素的情况。`deque`是`<deque>`头文件中的容器,主要特点包括:
1. **双端访问**:可以从两端(前部或后部)添加或删除元素,这在实现栈、队列等数据结构时非常方便。
2. **随机访问**:内部是一个双向链表,同时维护一个数组,所以可以像数组一样快速随机访问元素,尤其是对于中间位置的元素。
3. **内存分配**:`deque`会在两端自动扩展或收缩,以适应元素的数量变化,而不需要预知元素总数。
使用`deque`的基本步骤如下:
- 包含头文件:`#include <deque>`
- 声明deque实例:`std::deque<T> dequeName;`,其中T是存储元素的类型。
- 创建deque实例:可以指定初始容量,例如`std::deque<int> numbers(10);`
- 插入元素:`dequeName.push_front(value);`(在前部插入)
- `dequeName.push_back(value);`(在后部插入)
- 删除元素:`dequeName.pop_front();`(删除前部元素)
- `dequeName.pop_back();`(删除后部元素)
- 访问元素:`int element = dequeName.front();`(获取前部元素)
- `int element = dequeName.back();`(获取后部元素)
相关问题
C++中deque
### C++ 中 `std::deque` 的使用方法和特性
#### 特性概述
`std::deque` 是标准模板库 (STL) 提供的一种序列容器,支持在两端快速插入和删除元素。这种灵活性使得 `std::deque` 成为了处理动态数据的理想选择之一[^2]。
#### 基本操作函数
- **构造与初始化**
可以通过多种方式创建并初始化一个 `std::deque` 实例:
```cpp
#include <deque>
using namespace std;
// 创建空的 deque
deque<int> deq1;
// 初始化指定大小,默认填充0
deque<int> deq2(5, 0);
```
- **访问元素**
支持随机访问迭代器以及下标运算符来获取特定位置上的元素:
```cpp
deq1.front(); // 访问第一个元素
deq1.back(); // 访问最后一个元素
deq1.at(index); // 安全地按索引访问元素
deq1[index]; // 下标访问(不安全)
```
- **修改内容**
能够方便地向头部或尾部添加新项,并且可以轻松移除现有条目而不影响其他部分的数据结构稳定性:
```cpp
deq1.push_back(value); // 尾部追加单个元素
deq1.emplace_back(args...); // 构造对象后放置于末端
deq1.pop_back(); // 移除最后面的一个成员
deq1.push_front(value); // 头部前置单一项目
deq1.emplace_front(args...); // 插入已构建的对象到最前面
deq1.pop_front(); // 删除开头处的内容
```
- **遍历展示**
利用范围for循环或是传统的基于迭代器的方法都可以实现对整个队列内所有项目的枚举打印功能:
```cpp
void printDeque(const deque<int>& d){
for(auto& elem : d){ // 使用范围for循环简化语法
cout << elem << " ";
}
cout << endl;
}
```
上述代码片段展示了如何定义一个接受常量引用参数类型的辅助函数用于输出任意给定整数型双端队列中的全部数值[^1]。
#### 应用场景建议
当遇到如下情况时推荐优先考虑选用 `std::deque` :
- 需要在列表首尾频繁执行插入/弹出动作;
- 不必长期保持指向内部节点的有效指针;
- 追求内存回收效率,在某些情况下希望及时释放不再被使用的空间资源;然而需要注意的是这一点并没有得到官方文档的确切承诺[^3]。
c++ deque用法
deque是C++标准库中的容器,它是双端队列(double-ended queue)的缩写。deque允许在两端进行高效地插入和删除操作。以下是deque的用法:
引用中的示例展示了如何使用deque,通过cin从用户输入一系列整数,并将它们添加到deque的尾部,直到输入0为止。最后,打印出deque中存储的数字数量。使用push_back将元素添加到deque的尾部。
引用中的示例展示了如何使用deque的emplace_back函数,它可以在deque的尾部添加元素。emplace_back函数相比push_back函数更高效,因为它可以直接在deque的内存中构造新元素,而不需要创建一个临时对象。
引用中的示例展示了如何使用deque的push_front函数,在deque的前端添加元素。通过push_front函数,可以在deque的前面添加元素。
总结起来,deque是一个双端队列,它可以在两端高效地进行插入和删除操作。可以使用push_back和push_front函数将元素添加到deque的尾部和前面,也可以使用emplace_back函数在deque的尾部添加元素。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* *3* [C++ Deque的使用](https://blog.csdn.net/weixin_42587961/article/details/100305841)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"]
[ .reference_list ]
阅读全文
相关推荐
















