【C++】 std::deque

 std::deque:

std::deque 是 C++ 标准库中的一个双端队列容器。它允许在两端进行高效的插入和删除操作,适用于需要在序列的两端进行频繁操作的场景。

基本特性

  1. 双端操作: 支持在队列的前端和后端高效地插入和删除元素。
  2. 随机访问: 支持高效的随机访问元素,类似于 std::vector
  3. 动态大小std::deque 会自动调整大小,管理内存。

常用操作

以下是 std::deque 的一些常用操作及示例:

1. 创建 std::deque
#include <deque>
#include <iostream>

int main() {
    // 创建一个空的 deque,元素类型为 int
    std::deque<int> deq1;

    // 创建一个初始化为 10 个元素的 deque,元素值为 0
    std::deque<int> deq2(10);

    // 创建一个初始化为 10 个元素的 deque,元素值为 5
    std::deque<int> deq3(10, 5);

    // 使用初始化列表创建 deque
    std::deque<int> deq4 = {1, 2, 3, 4, 5};

    return 0;
}
2. 访问和修改元素
#include <deque>
#include <iostream>

int main() {
    std::deque<int> deq = {10, 20, 30, 40, 50};

    // 通过下标访问
    std::cout << "Element at index 2: " << deq[2] << std::endl;

    // 使用 at() 方法访问,提供边界检查
    std::cout << "Element at index 3: " << deq.at(3) << std::endl;

    // 修改元素
    deq[2] = 100;
    std::cout << "Modified element at index 2: " << deq[2] << std::endl;

    return 0;
}

 3. 添加和删除元素

#include <deque>
#include <iostream>

int main() {
    std::deque<int> deq;

    // 添加元素到末尾
    deq.push_back(10);
    deq.push_back(20);
    deq.push_back(30);

    // 添加元素到前面
    deq.push_front(0);
    deq.push_front(-10);

    std::cout << "Deque size after push_back and push_front: " << deq.size() << std::endl;

    // 删除末尾元素
    deq.pop_back();

    // 删除前面元素
    deq.pop_front();

    std::cout << "Deque size after pop_back and pop_front: " << deq.size() << std::endl;

    return 0;
}

 4. 遍历 std::deque

#include <deque>
#include <iostream>

int main() {
    std::deque<int> deq = {1, 2, 3, 4, 5};

    // 使用范围 for 循环
    for (const auto& elem : deq) {
        std::cout << elem << " ";
    }
    std::cout << std::endl;

    // 使用迭代器遍历
    for (auto it = deq.begin(); it != deq.end(); ++it) {
        std::cout << *it << " ";
    }
    std::cout << std::endl;

    return 0;
}
5. 其他常用方法
  • size(): 返回 deque 中元素的数量。
  • empty(): 判断 deque 是否为空。
  • clear(): 清空 deque 中的所有元素。
  • front(): 访问 deque 的第一个元素。
  • back(): 访问 deque 的最后一个元素.
  • resize(): 调整 deque 的大小,新增元素会使用默认构造函数初始化。

示例

#include <deque>
#include <iostream>

int main() {
    std::deque<int> deq = {1, 2, 3, 4, 5};

    // 输出前端和后端元素
    std::cout << "Front element: " << deq.front() << std::endl;
    std::cout << "Back element: " << deq.back() << std::endl;

    // 修改前端和后端元素
    deq.front() = 10;
    deq.back() = 50;

    std::cout << "Modified front element: " << deq.front() << std::endl;
    std::cout << "Modified back element: " << deq.back() << std::endl;

    // 调整大小
    deq.resize(8, 0); // 增加元素,并用 0 填充
    std::cout << "Size after resizing to 8: " << deq.size() << std::endl;

    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

data_structure_wr

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值