C++ 11将向量传递给构造函数

10 c++ constructor vector c++11

我整天都在阅读关于传递参数的最有效方法,我很困惑.我想传递这样的矢量:

Foo f({1,2,3});
Run Code Online (Sandbox Code Playgroud)

我只想用传递的向量初始化我的_member变量.现在的问题是我的构造函数应该如何显示:

// pass by value
Foo (vector<int> vec) : _member{vec} {}

// const reference
Foo (const vector<int>& vec) : _member{vec} {}

// rvalue reference
Foo (vector<int>&& vec) : _member{std::move(vec)} {}
Run Code Online (Sandbox Code Playgroud)

T.C*_*.C. 11

最简单的方法是按值获取向量,然后移动它:

Foo (vector<int> vec) : _member{std::move(vec)} {}
Run Code Online (Sandbox Code Playgroud)

与一对const vector<int>&/ vector<int>&&重载相比,你需要支付一个额外的移动(对于向量来说非常便宜),但是不必编写两个构造函数(如果你有多个参数,它可以很快爆炸).