1 c++ stdvector move-semantics c++11
我有一个类,其成员是向量的向量.我想为这个类编写一个构造函数,它将一个向量的r值引用作为参数,并将其作为vector参数的单个元素向量移动到成员向量中.到目前为止,我有:
class AClass
{
std::vector<std::vector<int>> member;
public:
AClass(std::vector<int> &&vec) : member(1)
{
member[0] = std::vector<int>(std::move(vec));
}
}
Run Code Online (Sandbox Code Playgroud)
这似乎工作正常,但我不确定std::move周围vec是否有必要.或者,如果std::vector我已经为我照顾了很多这个,那我的写法有点不同.
它应该更短:
member[0] = std::move(vec);
Run Code Online (Sandbox Code Playgroud)
为了调用
vector<T,Allocator>& operator=(vector<T,Allocator>&& x);
Run Code Online (Sandbox Code Playgroud)
据我所知,显式移动是必要的,因为vec它不是一个rvalue(它是一个命名变量,可以在左侧使用operator=).
| 归档时间: |
|
| 查看次数: |
441 次 |
| 最近记录: |