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

std::

forward_list::resize

公众成员函数  <forward_list>
void resize (size_type n);
void resize (size_type n, const value_type& val);

改变大小

调整容器大小以包含n个元素。

如果n小于容器中当前的元素数,则将内容修剪为只包含前n个元素,删除超过的元素(并销毁它们)。

如果n大于容器中当前的元素数量,则在容器的末尾插入足够多的元素以达到n个元素的大小,从而扩展内容。 如果指定了val,则将新元素初始化为val的副本,否则将对它们进行默认初始化。

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

☲  参数


n
新的容器大小,以元素的数量表示。
成员类型size_type是一个无符号整型。
val
一个对象,如果n大于当前容器大小,则将其内容复制到添加的元素中。
成员类型value_type是容器中元素的类型,在forward_list中定义为第一个模板形参(T)的别名。

☉  返回值



none

在增长的情况下,新元素的存储是使用allocator_traits<allocator_type>::construct()分配的, 如果失败可能会抛出异常(对于默认的分配器,如果分配请求不成功,会抛出bad_alloc)。

☣  示例



// resizing forward_list
#include <iostream>
#include <forward_list>

int main ()
{
  std::forward_list<int> mylist = {10, 20, 30, 40, 50};
                                // 10 20 30 40 50
  mylist.resize(3);             // 10 20 30
  mylist.resize(5,100);         // 10 20 30 100 100

  std::cout << "mylist contains:";
  for (int& x: mylist) std::cout << ' ' << x;
  std::cout << '\n';

  return 0;
}

输出:
mylist contains: 10 20 30 100 100

✥ 复杂度



插入/删除元素的数量为线性(构造函数/析构函数),大小为线性(迭代器推进)。

☣ 迭代器的有效性



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

⇄ 数据竞争


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

☂ 异常安全性



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

🍄  另请参阅



forward_list::clear 清除内容(公共成员函数)
forward_list::erase_after 删除元素 (公共成员函数)
forward_list::insert_after 插入元素 (公共成员函数)
forward_list::max_size 返回最大元素个数 (公共成员函数)
forward_list::remove 删除具有特定值的元素 (公共成员函数)
forward_list::merge 合并已排序的容器 (公共成员函数)

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