📜  C++ STL中的双端队列resize()函数(1)

📅  最后修改于: 2023-12-03 14:59:47.153000             🧑  作者: Mango

C++ STL中的双端队列resize()函数

C++ STL中的双端队列(deque)是一种基于顺序容器的数据结构,它允许在两端进行插入/删除操作。在双端队列中,使用resize()函数可以改变队列的大小。

函数介绍

resize()函数有两种重载形式:

  1. void resize(size_type count):将deque的大小改为count。如果count小于当前size(),则删除尾部元素,缩小容器大小为count;如果count大于当前size(),则在尾部插入count-size()个默认构造的元素,扩大容器大小为count。
  2. void resize(size_type count, const value_type& value):将deque的大小改为count,同时新增或删除元素,新增元素用value初始化。
函数示例
#include <iostream>
#include <deque>

using namespace std;

int main() {
    deque<int> dq;
    dq.push_back(1);
    dq.push_back(2);
    dq.push_back(3);

    // 将deque的大小改为4,新增的元素用0初始化
    dq.resize(4);

    // 输出deque的元素
    for (auto i : dq) {
        cout << i << " ";
    }
    cout << endl;

    // 将deque的大小改为2,删除了最后两个元素
    dq.resize(2);

    // 输出deque的元素
    for (auto i : dq) {
        cout << i << " ";
    }
    cout << endl;

    // 将deque的大小改为5,新增的元素用4初始化
    dq.resize(5, 4);

    // 输出deque的元素
    for (auto i : dq) {
        cout << i << " ";
    }
    cout << endl;

    return 0;
}

输出结果:

1 2 3 0
1 2
1 2 4 4 4
总结

resize()函数是一种非常方便的函数,可以方便地改变deque的大小,同时新增或删除元素。需要注意的是,使用resize()函数可能会导致重新分配内存,因此需要谨慎使用,避免出现不必要的性能损失。