📜  C++ Vector.resize()函数(1)

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

C++ Vector.resize()函数

Vector是C++ STL中的一个常用容器,它可以动态地调整容器的大小,也可以在容器的特定位置插入和删除元素。resize()函数是Vector中常用的一个成员函数,它可以重新定义Vector的大小。

函数定义
void resize(size_type n, value_type val = value_type());

注:在该函数中,size_type是Vector类中定义的一个无符号整数类型,value_type是Vector类中元素的类型。

函数作用

resize()函数可以改变Vector的大小,使其具有一个新的元素数目。如果新的元素数目小于当前的元素数目,则函数会删除多余的元素。如果新的元素数目大于当前的元素数目,则函数会在Vector的末尾添加新元素。

函数参数

resize()函数可以接受一个或两个参数:

  • n:新的元素数目。
  • val:要添加到Vector末尾的默认值(可选参数)。

如果省略参数val,则Vector中新添加的元素将使用默认的构造函数进行初始化。

使用示例
#include <iostream>
#include <vector>

int main() {
  std::vector<int> my_vector;
  my_vector.resize(5); // 将Vecotr的大小设为5
  std::cout << "my_vector contains ";
  for (auto& it : my_vector) {
    std::cout << it << " "; // 输出: 0 0 0 0 0
  }
  std::cout << "\n";

  my_vector.resize(8, 100); // 将Vecotr的大小设为8,新添加的元素均为100
  std::cout << "my_vector contains ";
  for (auto& it : my_vector) {
    std::cout << it << " "; // 输出: 0 0 0 0 0 100 100 100
  }
  std::cout << "\n";

  my_vector.resize(3); // 将Vecotr的大小缩小为3
  std::cout << "my_vector contains ";
  for (auto& it : my_vector) {
    std::cout << it << " "; // 输出: 0 0 0
  }
  std::cout << "\n";

  return 0;
}
注意事项
  • resize()函数仅在新的元素数目不等于当前元素数目时,才会改变Vector的大小。如果新的元素数目等于当前元素数目,则该函数不会做出任何改变。
  • 如果新的元素数目小于当前元素数目,则resize()函数将删除多余的元素。删除多余的元素时,将调用它们的析构函数。
  • 如果新的元素数目大于当前元素数目,则resize()函数将在Vector的末尾添加新元素。新元素将使用默认的构造函数进行初始化。
  • 如果使用可选参数val,则在Vector末尾添加新元素时,新元素将使用指定的值进行初始化。
  • 使用resize()函数改变Vector的大小,可能会导致底层内存重新分配。因此,在需要进行Vector大小调整的程序中,尽可能预估好需要的大小,以避免不必要的时间和空间消耗。