提问人:YAKOVM 提问时间:11/2/2013 最后编辑:dypYAKOVM 更新时间:3/12/2018 访问量:2981
STL - 赋值运算符与“赋值”成员函数
STL - assignment operator vs. `assign` member function
问:
vector
(以及其他容器)具有成员函数 (MF)。
我想比较 MF(范围版本)与赋值运算符。list
assign
assign
据我了解,在以下情况下使用它是有用的:assign
- 人们想要分配向量的子范围(而不是从开始到结束)。
- 赋值是从数组完成的。
在其他情况下,MF 没有缺点,可以使用赋值运算符。
我说得对吗?
使用 MF 还有其他原因吗?assign
assign
答:
18赞
Collin Dauphinee
11/2/2013
#1
使用的主要原因是将数据从一种类型的容器复制到另一种类型的容器。assign
例如,如果要将 的内容迁移到 ,则不能使用赋值运算符,但可以使用 。std::set<int>
std::vector<int>
vector.assign(set.begin(), set.end())
另一个例子是复制两个容器的内容,这些容器装有不同类型的容器,这些容器可以转换为一个或另一个;如果尝试赋值给 ,赋值运算符是不够的。std::vector<Derived*>
std::vector<Base*>
评论
1赞
Emil Laine
6/13/2015
你仍然可以做等等,所以是完全多余的。vector = std::vector<int>(set.begin(), set.end())
assign
9赞
TemplateRex
7/2/2017
如果您想重用容量而不是分配一个全新的向量,@emlai很有用。assign
上一个:在部分排序的数组中查找元素
评论
assign