小工具知识网

当前位置: 首页 > 行业知识 > C++ 学习之Deque容器

行业知识

C++ 学习之Deque容器

2026-11-01 14:22:14 来源:互联网转载

C++ Deque容器概念

Deque(Double-Ended Queue,双端队列)是C++标准库中的一种容器,允许在两端进行高效地插入和删除操作。Deque与Vector类似,但相比于Vector,Deque在两端插入和删除元素的效率更高。

Deque具有以下特点和概念:

  1. 双端操作:Deque支持在头部和尾部进行插入和删除等操作,因此可以被视为同时具备了Stack(栈)和Queue(队列)的特性。

  2. 随机访问:Deque允许通过索引随机访问其中的元素,因此可以像数组一样方便地访问任意位置的元素。

  3. 动态大小:Deque的大小可以动态调整,可以根据需要动态增长或缩小其大小,而且不像数组一样需要提前指定大小。

  4. 连续内存块:Deque内部通常由多个连续的内存块组成,不像Vector那样只有一个单独的内存块,这使得Deque能够快速地在两端执行插入和删除操作。

  5. 迭代器支持:Deque支持各种迭代器,包括顺序迭代器、逆序迭代器等,可以方便地对Deque中的元素进行遍历和操作。

Deque是一种非常灵活和高效的容器,适用于需要在两端频繁插入和删除元素,并且需要随机访问元素的场景。在使用Deque时,可以根据具体情况选择合适的操作和方法,以实现高效和方便的数据处理。

C++ Deque容器构造函数

C++中的Deque容器具有多个构造函数,允许我们以不同的方式创建Deque对象。以下是Deque容器的常用构造函数:

  1. 默认构造函数:

    std::deque myDeque;

    创建一个空的Deque对象,其中T表示元素的数据类型。

  2. 拷贝构造函数:

    std::deque myDeque(otherDeque);

    从另一个Deque对象 otherDeque 拷贝构造一个新的Deque对象 myDeque。

  3. 带有初始值和大小的构造函数:

    std::deque myDeque(count, value);

    创建一个包含 count 个初始化为 value 的元素的Deque对象 myDeque。

  4. 带有迭代器范围的构造函数:

    std::deque myDeque(beginIter, endIter);

    使用迭代器范围 [beginIter, endIter) 内的元素创建一个新的Deque对象 myDeque。

除了上述构造函数,Deque还提供其他自定义构造函数和可选参数,可以根据特定需求来选择合适的构造函数。

C++ Deque容器赋值操作

在C++中,可以使用赋值操作符(=)或assign()函数将一个Deque容器赋值给另一个Deque容器。下面是Deque容器的赋值操作示例:

  1. 使用赋值操作符(=):

    std::deque deque1 = {1, 2, 3, 4, 5};  // 初始化deque1std::deque deque2;                   // 初始化空的deque2deque2 = deque1;  // 使用赋值操作符将deque1赋值给deque2// 输出deque2的元素for (const auto& element : deque2) {    std::cout 1, 2, 3, 4, 5};  // 初始化deque1std::deque    std::cout 1, 2, 3, 4, 5};std::cout     std::cout     std::cout 1, 2, 3};myDeque.resize(5); // 将Deque容器大小调整为5,新增的元素值为默认值std::cout 1, 2, 3};myDeque.push_back(4);   // 在尾部插入元素4myDeque.push_front(0);  // 在头部插入元素0// 输出Deque容器中的元素for (const auto& element : myDeque) {    std::cout 1, 2, 3, 4, 5};myDeque.pop_back();   // 删除尾部的元素myDeque.pop_front();  // 删除头部的元素// 输出Deque容器中的元素for (const auto& element : myDeque) {    std::cout 1, 2, 3, 4, 5};auto it = myDeque.begin() + 2;  // 获取迭代器指向位置2myDeque.insert(it, 6);          // 在位置2之前插入元素6// 输出Deque容器中的元素for (const auto& element : myDeque) {    std::cout 1, 2, 3, 4, 5};auto it = myDeque.begin() + 2;      // 获取迭代器指向位置2myDeque.erase(it);                  // 删除位置2处的元素// 输出Deque容器中的元素for (const auto& element : myDeque) {    std::cout 1, 2, 3, 4, 5};int firstElement = myDeque[0];  // 访问第一个元素int thirdElement = myDeque[2];  // 访问第三个元素std::cout 1, 2, 3, 4, 5};int secondElement = myDeque.at(1);  // 访问第二个元素std::cout 1, 2, 3, 4, 5};// 使用迭代器输出Deque容器中的元素for (auto it = myDeque.begin(); it != myDeque.end(); ++it) {    std::cout 1, 2, 3, 4, 5};myDeque[2] = 10;  // 修改第三个元素的值为10// 输出修改后的Deque容器中的元素for (const auto& element : myDeque) {    std::cout     std::deque5, 8, 2, 1, 7, 3};        // 排序前输出Deque容器中的元素    std::cout         std::cout         std::cout     return abs(a) 

上一篇:css字体怎么从服务器?

下一篇:泥巴下载攻略,轻松获取优质泥巴资源