参考c++官方手册

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

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

  1. template <class InputIterator> 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<value_type> il);
    此形式将vector的内容替换为初始化列表il中的元素。

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

#include <iostream>
#include <vector>

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;
}

第二和第三

#include <iostream>
#include <vector>
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;
}

以上程序的输出将会是:

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

官方示例

// vector assign
#include <iostream>
#include <vector>

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
Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐