对于一个类项目,我们正在制作一个简单的编译器/关系数据库。我的生成正确答案,但在大型查询时速度太慢。我运行了 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/