• C++ Reference: Standard C++ Library reference: Containers: deque: deque: resize


    C++官网参考链接:https://cplusplus.com/reference/deque/deque/resize/

    公有成员函数 
    <deque>
    std::deque::resize
    C++98
    void resize (size_type n, value_type val = value_type());
    C++11
    void resize (size_type n);
    void resize (size_type n, const value_type& val);
    调整大小 
    调整容器的大小,使其包含n个元素。
    如果n小于当前容器size,则内容将减少到其前n个元素,删除超出的元素(并销毁它们)。
    如果n大于当前容器的size,则内容将被扩展,在结束处插入所需的元素,以达到n的大小。如果指定了val,则将新元素初始化为val的副本,否则将对它们进行值初始化。
    注意,此函数通过插入或删除容器中的元素来更改容器的实际内容。

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

    返回值
    没有返回值。 

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

    用例
    // resizing deque
    #include
    #include

    int main ()
    {
      std::deque mydeque;
      std::deque::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::iterator it = mydeque.begin(); it != mydeque.end(); ++it)
        std::cout << ' ' << *it;
      std::cout << '\n';

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

    复杂度
    在插入/删除的元素(构造/析构)数量上是线性的。

    iterator的有效性
    在容器收缩的情况下,在resize后所有未被删除的iterator、指针和对元素的reference仍然有效,并引用调用之前引用的相同元素。
    如果容器扩展,所有iterator都无效,但现有的指针和reference仍然有效,指向它们之前引用的相同元素。

    数据竞争
    容器被修改。
    删除的元素被修改(参见上面的iterator的有效性)。

    异常安全
    如果n小于或等于容器的size,则函数永远不会抛出异常(无抛出保证)。
    否则,如果抛出异常,则容器将保留有效状态(基本保证):构造元素或分配存储都可能抛出。 

  • 相关阅读:
    夯实算法-每日温度
    2022/7/30 考试总结
    Unity重启 --- 工具介绍部分 (面板与工具条)
    迎接AIGC浪潮 Gooxi为智慧存储筑基
    [极客大挑战 2019]RCE ME 取反绕过正则匹配 绕过disable_function设置
    《uni-app》表单组件-Picker组件
    掌握pandas cut函数,一键实现数据分类
    【车辆动力】基于matlab模拟停车动力学【含Matlab源码 2258期】
    Oracle到PostgreSQL的不停机数据库迁移
    跟着NatureMetabolism学作图:R语言ggplot2转录组差异表达火山图
  • 原文地址:https://blog.csdn.net/weixin_40186813/article/details/127651662