📜  C++ STL-list.resize()函数(1)

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

C++ STL-list.resize()函数

介绍

STL(Standard Template Library)是C++的一个通用模板库,其中的list是一种双向链表,提供了insert、emplace、erase、push_back、push_front等操作,以及其他一些遍历和操作函数。其中resize()函数用于更改list的大小,它有两个不同的调用方式:

void resize (size_type n);
void resize (size_type n, const value_type& val);

第一个重载的作用是将list的大小更改为n,如果n小于当前大小,则缩小list(丢弃超出尾部的元素),否则,将在尾部添加指定(默认构造的)元素。第二个重载的作用是将list的大小更改为n,并用val初始化任何新元素。

语法
list.resize(n)
list.resize(n, val)

参数说明:

  • n : 要将list大小更改为的元素数
  • val : 在新增的元素时,用于初始化新元素的值,默认为0。
返回值

无返回值。

示例
resize(n)-将list大小更改为n
#include <iostream>
#include <list>
using namespace std;

int main()
{
  list<int> mylist;
  for (int i=1; i<10; ++i) mylist.push_back(i);

  mylist.resize(5);
  cout << "mylist contains:";
  for (auto& x: mylist) std::cout << ' ' << x;
  std::cout << '\n';
  
  return 0;
}

输出结果:

mylist contains: 1 2 3 4 5
resize(n, val)-将list大小更改为n,并用val初始化任何新的元素。
#include <iostream>
#include <list>
using namespace std;

int main()
{
  list<int> mylist;
  for (int i=1; i<10; ++i) mylist.push_back(i);

  mylist.resize(5);
  mylist.resize(8,100);
  mylist.resize(12);

  cout << "mylist contains:";
  for (auto& x: mylist) std::cout << ' ' << x;
  std::cout << '\n';
  
  return 0;
}

输出结果:

mylist contains: 1 2 3 4 5 100 100 100 0 0 0 0
总结

resize()函数可以根据需要更改list的大小,重载函数可以在新增元素时提供初始化值。注意,resize()函数会更改list的大小,可能会导致list中的迭代器失效,因此在使用resize()函数时应该注意它的副作用。