• C++ 算法学习 之 vector assign


    参考c++官方手册

    vector::assign是C++标准模板库中的一个函数,它的主要功能是给vector容器重新赋值。具体来说,vector::assign函数会删除vector中的所有元素,并根据用户提供的参数重新填充。

    这个函数有三种形式:
    在这里插入图片描述

    1. template void assign (InputIterator first, InputIterator last);
      此形式将vector的内容替换为[first,last)区间内的元素。
      注意:此处的方括号表示闭区间,圆括号表示开区间,也就是包含first,不包含last。

    2. void assign (size_type n, const value_type& val);
      此形式将vector的内容替换为n个复制的val。

    3. void assign (initializer_list il);
      此形式将vector的内容替换为初始化列表il中的元素。

    下面是一些使用vector::assign的例子:
    第一种

    #include 
    #include 
    
    int main()
    {
        // 创建一个vector对象v1和v2
        std::vector<int> v1;
        std::vector<int> v2;
    
        // 使用push_back()函数给v1添加元素
        for (int i = 1; i <= 5; i++)
            v1.push_back(i);
    
        // 使用迭代器范围赋值
        v2.assign(v1.begin(), v1.end());
    
        std::cout << "The vector elements of v2 are: ";
        for (int i = 0; i < v2.size(); i++)
            std::cout << v2[i] << " ";
    
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    第二和第三

    #include 
    #include 
    int main()
    {
        // 创建一个vector对象v
        std::vector<int> v;
    
        // 使用assign()函数给v分配5个元素,每个元素的值都是10
        v.assign(5, 10); //第二种用法
    
        std::cout << "The vector elements are: ";
        for(int i=0; i<v.size(); i++)
            std::cout << v[i] << " ";
    
        // 使用assign()将v的内容替换为2, 3
        v.assign({2, 3}); // 第三种用法
    
        std::cout << "\nThe vector elements are: ";
        for(int i=0; i<v.size(); i++)
            std::cout << v[i] << " ";
    
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23

    以上程序的输出将会是:

    The vector elements are: 10 10 10 10 10 
    The vector elements are: 2 3
    
    • 1
    • 2

    官方示例

    // vector assign
    #include 
    #include 
    
    int main ()
    {
      std::vector<int> first;
      std::vector<int> second;
      std::vector<int> third;
    
      first.assign (7,100);             // 7 ints with a value of 100
    
      std::vector<int>::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;
    }
     Edit & run on cpp.sh
    Output:
    Size of first: 7
    Size of second: 5
    Size of third: 3
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
  • 相关阅读:
    打破思维的玻璃罩
    第9章Linux实操篇-组管理和权限管理
    精简版STC单片机串口程序(只有初始化和sendbyte)
    git中如何获取远程仓库的最新代码?
    量化交易进行回测时有哪些有意义的统计指标?
    Gabor 分解原理和代码实现
    【计网】传输层
    [MySQL] MySQL库的基础操作
    ELK安装、部署、调试 (八)logstash配置语法详解
    1个月时间整理了2019年上千道Java面试题,近500页文档!
  • 原文地址:https://blog.csdn.net/L2489754250/article/details/132892922