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


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

    公有成员函数 
    <deque>
    std::deque::assign
    C++98
    范围 (1)    
    template  void assign (InputIterator first, InputIterator last);
    填充 (2)    
    void assign (size_type n, const value_type& val);
    C++11
    范围 (1)    
    template  void assign (InputIterator first, InputIterator last);
    填充 (2)    
    void assign (size_type n, const value_type& val);
    初始化列表 (3)    
    void assign (initializer_list il);
    分配容器内容
    deque容器分配新内容,替换其当前内容并相应地修改其size
    C++98
    范围版本(1)中,新内容是由firstlast范围中的每个元素以相同的顺序构造的元素。
    填充版本(2)中,新内容是n个元素,每个元素初始化为val的一个副本。
    如果需要,容器使用它的内部allocator(internal allocator)来分配额外的存储空间。
    C++11
    范围版本(1)中,新内容是由firstlast范围中的每个元素以相同的顺序构造的元素。
    填充版本(2)中,新内容是n个元素,每个元素初始化为val的一个副本。
    初始化列表版本(3)中,新内容是作为初始化列表传递的值的副本,以相同的顺序。
    如果存储发生变化,则使用内部allocator(internal allocator)(通过其traits)。它也被用来destroy所有现有的元素,并construct新的元素。
    调用之前容器中保存的任何元素都将被销毁并替换为新构造的元素(不发生元素赋值)。

    形参 
    first,last 
    输入iterator到序列的初始和最终位置。使用的范围是[first,last),它包括firstlast之间的所有元素,包括由first指向的元素,但不包括由last指向的元素。
    函数模板实参InputIterator应该是一个输入iterator(input iterator)类型,它指向可以构造value_type对象的类型元素。
    n
    容器的新大小。
    成员类型size_type是无符号整型。
    val 
    值来填充容器。容器中的n个元素都将初始化为该值的副本。
    成员类型value_type是容器中元素的类型,在deque中定义为其第一个模板形参(T)的别名。
    il
    一个initializer_list对象。编译器将从初始化列表声明器自动构造此类对象。
    成员类型value_type是容器中元素的类型,在deque中定义为其第一个模板形参(T)的别名。

    返回值
    没有返回值。

    用例
    // deque::assign
    #include
    #include

    int main ()
    {
      std::deque first;
      std::deque second;
      std::deque third;

      first.assign (7,100);             // 7 ints with a value of 100

      std::deque::iterator it;
      it=first.begin()+1;

      second.assign (it,first.end()-1); // the 5 central values of first

      int myints[] = {1776,7,4};
      third.assign (myints,myints+3);   // assigning from array.

      std::cout << "Size of first: " << int (first.size()) << '\n';
      std::cout << "Size of second: " << int (second.size()) << '\n';
      std::cout << "Size of third: " << int (third.size()) << '\n';
      return 0;
    }
    输出:

    复杂度
    在初始和最终的sizes(析构、构造)中的线性。

    iterator的有效性
    与此容器相关的所有iterator、指针和reference都将失效。

    数据竞争
    所有复制的元素都被访问。
    容器被修改。
    所有包含的元素都被修改。

    异常安全
    基本保证:如果抛出异常,则容器处于有效状态。
    如果元素构造的适当实参不支持allocator_traits::construct,或者由[first,last)指定的范围无效,则会导致未定义的行为。 

  • 相关阅读:
    tkinter显示图片
    VScode无法跳转函数定义
    贪心算法-找零钱(C#实现)
    解决vue项目首行报红( ESLint 配置)和新建的vue文件首行报红问题
    ElasticSearch
    C++ STL - string 成员函数 + 模拟实现
    【图像融合】基于双树复小波变换的像素级图像融合算法附matlab代码
    在PCB走线中线不直,有小疙瘩,让走线变直的方法
    (动态规划)5. 最长回文子串 java解决
    Halcon如何使用SaperaLT库连接dalsa相机
  • 原文地址:https://blog.csdn.net/weixin_40186813/article/details/127654747