STL - 赋值运算符与“赋值”成员函数

STL - assignment operator vs. `assign` member function

本文关键字:成员 函数 赋值 赋值运算符 STL      更新时间:2023-10-16
vector

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

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

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

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

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

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

另一个

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