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