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

std::

deque::resize

公众成员函数  <deque>

C++98:
void resize (size_type n, value_type val = value_type());
改变大小
调整容器大小,使其包含n个元素。

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

如果n大于当前容器的大小,则在容器的末尾插入足够多的元素来扩展容器的内容,使容器的大小达到n。 如果指定了val,则将新元素初始化为val的副本,否则将对它们进行值初始化。

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

☲  参数


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

☉  返回值



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

☣  示例



// resizing deque
#include <iostream>
#include <deque>

int main ()
{
  std::deque<int> mydeque;
  std::deque<int>::iterator it;

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

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

  std::cout << "mydeque contains:";
  for (std::deque<int>::iterator it = mydeque.begin(); it != mydeque.end(); ++it)
    std::cout << ' ' << *it;
  std::cout << '\n';

  return 0;
}

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

✥ 复杂度



与插入/删除的元素数量(构造/析构)成线性关系。

☣ 迭代器的有效性



在容器减小的情况下,所有指向未删除元素的迭代器、指针和引用在调整大小后仍然有效, 并指向它们在调用前引用的相同元素。

如果容器增加,则所有迭代器失效,但现有的指针和引用仍然有效,它们指向的元素与之前相同。

⇄ 数据竞争


容器被修改。
删除的元素将被修改(参见上面的迭代器有效性)。

☂ 异常安全性



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

🍄  另请参阅



deque::size 返回元素数量(公众成员函数)
deque::clear 清除内容 (公众成员函数)
deque::erase 删除元素 (公众成员函数)
deque::max_size 返回最大元素个数(公众成员函数)

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