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

Yak*_*kov 7 c++ stl operators assignment-operator assign

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

据我所知,在以下情况下使用是有用的assign:

  1. 人们想要分配向量的子范围(不是从开始到结束).
  2. 赋值是从数组完成的.

在其他情况下,assignMF 没有缺点,可以使用赋值运算符.我对吗?使用assignMF 还有其他一些原因吗?

Col*_*nee 9

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

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

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

  • 如果您想重新使用容量而不是分配一个全新的向量,则@emlai`assign`很有用。 (3认同)