[在参数化的构造函数(带有初始化列表)中使用std :: move()而不是常规成员初始化(即分配)的优点是什么?
例如,
#include <iostream>
#include <vector>
template <typename V>
class myVec{
private:
std::vector< std::vector<V> > vec;
public:
myVec1(const std::vector< std::vector<V> > &myArr):vec(myArr) {};
myVec2(const std::vector< std::vector<V> > &myArr):vec(std::move(myArr)) {};
};
[使用myVec1而不是另一个使用myVec1可以带来多少好处(内存,性能等)?
在您的情况下,由于两种情况下的输入均为const
,因此性能变化为零
[通常,正确使用move构造函数会带来很大的好处,因为不会有任何不必要的复制和分配-每个std::vector
实例都有一个。