使用大型数据集初始化类成员向量的最有效方法

Avi*_*hol 1 c++ c++11

使用数据初始化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,但我并不完全熟悉这种语言,也许有更好的标准方法来完成这样的任务.

mar*_*inj 6

添加移动构造函数:

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)

但这假定vectorOfLargeClassstd::move不再需要之后main