c++ - 为什么插入 set<vector<string>> 这么慢?

标签 c++ performance vector set

对于一个类项目,我们正在制作一个简单的编译器/关系数据库。我的生成正确答案,但在大型查询时速度太慢。我运行了 visual studio 的性能分析,我的程序花费了 80% 的时间将我的元组(表中的行)插入到一个集合中。该函数是计算叉积的一部分,因此结果有很多行,但我需要有关更快地将元组插入集合的建议。

for (set<vector<string>>::iterator it = tuples.begin(); it != tuples.end(); ++it)
{
    for (set<vector<string>>::iterator it2 = tuples2.begin(); it2 != tuples2.end(); ++it2)
    {
        vector<string> f(*it);
        f.insert(f.end(), it2->begin(), it2->end());
        newTuples.insert(f); //This is the line that takes all the processing time
    }
}

最佳答案

您无缘无故地按值复制大 vector 。你应该移动:newTuples.insert(std::move(f));

关于c++ - 为什么插入 set<vector<string>> 这么慢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40940854/

相关文章:

C++ 使用 move 语义将参数传递给另一个函数

"FROM"不同运算符用法之间的MySQL性能差异

c++ - 为什么除法比 C++ 中的位移慢?

c++ - 在类中声明 vector 的大小

vector - 从 View 矩阵中获取眼睛、目标和向上向量

c++ - 在 C++ 中的不同文件中编写类

c++ - 编写mysql命令行

c++ - 哪个链接更快?许多小的 .so 文件还是几个大的 .so 文件?

javascript - 如何使用 ReactJS 实现真正的部分更新?

c++ - 如何将 boost::numeric::ublas::vector 复制到矩阵?