vector
(以及list
和其他容器)具有成员函数(MF)assign
。
我想比较assign
MF(范围版本)与赋值运算符。
据我所知,在以下情况下使用assign
非常有用:
在其他情况下,assign
MF没有缺点,可以使用赋值运算符。
我对吗?
是否还有其他原因可以使用assign
MF?
答案 0 :(得分:8)
使用assign
的主要原因是将数据从一种容器复制到另一种容器。
例如,如果您要将std::set<int>
的内容迁移到std::vector<int>
,则无法使用赋值运算符,但可以使用vector.assign(set.begin(), set.end())
。
另一个例子是复制两个容器的内容,这两个容器包含可转换为一个或另一个的不同类型;如果您尝试将std::vector<Derived*>
分配给std::vector<Base*>
,则分配运算符不足。