Home C&C++函数库 c++ 语法 程序源码 Linux C库

std::

list::resize

公众成员函数  <list>
C++98
void resize (size_type n, value_type val = value_type());

改变大小

调整容器的大小,使其包含n个元素。

如果n小于当前容器的大小,则将内容减少到其前n个元素,并删除(并销毁)超过的元素。

如果n大于当前容器的大小,则通过在末尾插入尽可能多的元素来展开内容, 以达到n的大小。如果指定了val,则将新元素初始化为val的副本,否则进行值初始化。

注意,这个函数通过插入或删除容器中的元素来改变容器的实际内容。

☲  参数


n
新的容器大小,以元素的数量表示。

成员类型size_type是一个unsigned整型。
val
对象,当n大于当前容器大小时,将其内容复制到添加的元素中。

如果没有指定,则使用默认构造函数。

成员类型value_type是容器中元素的类型,在列表中定义为第一个模板形参(T)的别名。

☉  返回值



none

在增长的情况下,使用容器的分配器分配新元素的存储, 失败时可能抛出异常(对于默认分配器,如果分配请求没有成功,则抛出bad_alloc)。

☣  示例



// resizing list
#include <iostream>
#include <list>

int main ()
{
  std::list<int> mylist;

  // set some initial content:
  for (int i=1; i<10; ++i) mylist.push_back(i);

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

  std::cout << "mylist contains:";
  for (std::list<int>::iterator it=mylist.begin(); it!=mylist.end(); ++it)
    std::cout << ' ' << *it;

  std::cout << '\n';

  return 0;
}

该代码设置了一个由9个数字组成的序列作为mylist的初始内容。 然后,它首先使用resize将容器大小设置为5,然后将其大小扩展到8, 新元素的值为100,最后将其大小扩展到12,并将其默认值(对于int元素,这是零)。
输出:
mylist contains: 1 2 3 4 5 100 100 100 0 0 0 0

✥ 复杂度



如果容器增长,则插入的元素数量为线性(构造函数)。
如果容器收缩,则删除元素的数量线性增加(析构),大小线性增加(迭代器前进)。

☣ 迭代器的有效性



指向被函数移除元素的迭代器、指针和引用将失效。
所有其他迭代器、指针和引用保持其有效性。

⇄ 数据竞争


容器修改。
删除的元素被修改。同时访问或修改其他元素是安全的。

☂ 异常安全性



如果该操作减少了容器的大小,则函数永远不会抛出异常(无抛出保证)。
否则,如果抛出异常,容器将保留一个有效状态(基本保证):构造元素或分配存储时可能抛出异常。

🍄  另请参阅



list::size 删除最后一个元素(公众成员函数)
list::clear 删除第一个元素(公众成员函数)
list::erase 按值删除元素(公众成员函数)
list::max_size 删除重复的值(公众成员函数)

联系我们 免责声明 关于CandCplus 网站地图