c++ - 从 vector 的 vector 填充 vector 的有效方法是什么?

标签 c++ boost vector

我有一个像std::vector< std::vector< int> >这样的 vector vector 我想从这个 vector 中填充 std::vector< int> , 你能告诉我这样做的有效方法吗?可能有一些我可以使用的 boost 功能。我正在使用 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;
}

最佳答案

您可以使用insert 插入整个 vector ,而不是单独插入每个元素。这可能会减少重新分配的次数。

for (auto const & vec : vecOfVec) {
    masterVec.insert(masterVec.end(), vec.begin(), vec.end());
}

或者,如果您的编译器不支持新式 for 循环和类型推导

for (std::vector<std::vector<int> >::iterator it = vecOfVec.begin(); it != vecOfVec.end(); ++it) {
    masterVec.insert(masterVec.end(), it->begin(), it->end());
}

将所有 vector 的大小相加,然后在开始之前在 masterVec 中保留足够的空间可能(或可能不会)更有效。

关于c++ - 从 vector 的 vector 填充 vector 的有效方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22561146/

相关文章:

python - Boost:在窗口中包含路径

c++ - 添加 boost 日志依赖项时出现 undefined reference 错误

c++ - 输出 cout 是感叹号。 C++

c++ - 将函数应用于 vector 子集的最佳方法是什么?

c++ - 如何在 Qt 中使用 QWebChannel 发送 QJsonObject

c++ - googlemock 框架不适用于虚拟继承

c++ - 我应该更喜欢 std::thread 还是 Boost 线程?

c++ - 编译器在编译以下代码期间显示警告

c++ - 从链表c++中删除最后一个节点

python - 如何添加两个 pandas 数据框并保留两个索引