11

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

据我了解,在以下情况下使用它很有用assign

  1. 一个人想要分配向量的一个子范围(而不是从头到尾)。
  2. 分配是从数组完成的。

在其他情况下,MF 没有缺点,assign可以使用赋值运算符。我对吗?assign使用MF还有其他原因吗?

4

1 回答 1

15

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

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

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

于 2013-11-01T23:01:00.287 回答