📅  最后修改于: 2023-12-03 14:59:45.737000             🧑  作者: Mango
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)
参数说明:
无返回值。
#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
#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()函数时应该注意它的副作用。