使用数据初始化std::vector类中的成员变量的最快/内存有效方法是什么?
这是我能够提出的:
class LargeClass
{
//lot of data, with long running constructor to initialize them
}
class EngineClass
{
public:
EngineClass( const vector<LargeClass>& vectorOfLargeClass )
{
mVectorOfLargeClass = vectorOfLargeClass; //Here is what I was able to come up
}
private:
vector<LargeClass> mVectorOfLargeClass;
}
int main()
{
vector<LargeClass> vectorOfLargeClass;
...
//fill vectorOfLargeClass with a lot of data
...
EngineClass engine( vectorOfLargeClass );
...
}
Run Code Online (Sandbox Code Playgroud)
我需要EngineClass保存vectorOfLargeClass在中创建的矢量数据的副本main().
我使用C++ 11,但我并不完全熟悉这种语言,也许有更好的标准方法来完成这样的任务.
添加移动构造函数:
EngineClass( vector<LargeClass>&& vectorOfLargeClass ) :
mVectorOfLargeClass(std::move(vectorOfLargeClass))
{
}
Run Code Online (Sandbox Code Playgroud)
然后使用如下:
EngineClass engine( std::move(vectorOfLargeClass) );
Run Code Online (Sandbox Code Playgroud)
但这假定vectorOfLargeClass在std::move不再需要之后main