我有一个矢量矢量喜欢std::vector< std::vector< int> >和从这个矢量我想填充std::vector< int>,你能告诉我有效的方法来做到这一点?我可以使用一些提升功能.我正在使用VS2010.下面的代码片段是我尝试过的:
std::vector<std::vector<int> >::iterator outereItr = vecOfVec.begin();
while(outereItr != vecOfVec.end())
{
std::vector<int>::iterator innerItr1 = (*outereItr).begin();
while(innerItr1 != (*outereItr).end())
{
masterVec.push_back(*innerItr1);
++innerItr1;
}
++outereItr;
}
Run Code Online (Sandbox Code Playgroud)
您可以使用insert插入整个矢量,而不是单独插入每个元素.这可能会减少重新分配的次数.
for (auto const & vec : vecOfVec) {
masterVec.insert(masterVec.end(), vec.begin(), vec.end());
}
Run Code Online (Sandbox Code Playgroud)
或者,如果您的编译器不支持新式for循环和类型演绎
for (std::vector<std::vector<int> >::iterator it = vecOfVec.begin(); it != vecOfVec.end(); ++it) {
masterVec.insert(masterVec.end(), it->begin(), it->end());
}
Run Code Online (Sandbox Code Playgroud)
它可能(或可能不)更有效地将所有向量的大小相加,然后在masterVec开始之前保留足够的空间.