STL - 赋值运算符与`assign`成员函数

时间:2013-11-01 21:06:15

标签: c++ stl operators assignment-operator assign

vector(以及list和其他容器)具有成员函数(MF)assign。 我想比较assign MF(范围版本)与赋值运算符。

据我所知,在以下情况下使用assign非常有用:

  1. 想要分配矢量的子范围(不是从开头到结尾)。
  2. 分配是从数组完成的。
  3. 在其他情况下,assign MF没有缺点,可以使用赋值运算符。 我对吗? 是否还有其他原因可以使用assign MF?

1 个答案:

答案 0 :(得分:8)

使用assign的主要原因是将数据从一种容器复制到另一种容器。

例如,如果您要将std::set<int>的内容迁移到std::vector<int>,则无法使用赋值运算符,但可以使用vector.assign(set.begin(), set.end())

另一个例子是复制两个容器的内容,这两个容器包含可转换为一个或另一个的不同类型;如果您尝试将std::vector<Derived*>分配给std::vector<Base*>,则分配运算符不足。