c++ - C++ 使用 lambda 进行排序很慢
问题描述
我正在尝试解决 Google Hash Challenge 2020 问题。在这个问题中,您有一些图书馆,并且对于每个图书馆,您都有一个书籍列表。每本书都有一个全局分数(定义为整数)。现在,我想通过降低分数对每个图书馆的书籍进行排序,我写了这个
for (auto it = inst.libraries.begin(); it != inst.libraries.end(); ++it)
{
std::sort((*it).books.begin(), (*it).books.end(), [inst](long const &b1, long const &b2) -> bool { return inst.scores[b1] > inst.scores[b2]; });
}
inst
是我保存数据的地方。对于具有 1000 个图书馆和每个图书馆少于 1000 本书的实例,之前的代码(使用 O2 选项)运行大约 8 分钟。
我的 C++ 代码中是否有一些错误?我应该怎么做才能获得更好的表现?
解决方案
您的 lambdainst
为每次调用sort
. 改为[&inst]
改为。
推荐阅读
- sass - 如何在我的 Mac 上完全卸载 SASS?
- javascript - DataTables - 如何让 columnDefs 宽度工作?
- amazon-ec2 - 无法连接到 EC2 上运行的 Airflow 服务器
- javascript - 无法采取行动时隐藏/显示浏览器历史记录返回按钮
- javascript - 如何在 Go 中重新创建这个 Javascript 数组结构?
- java - Java无法将数据插入Mongo
- python - 如何使用 Beautiful Soup 抓取 UL 类标签
- r - 在 R 中聚合来自 2 DF 的值
- ios - Cocoapods如何在工作区中将多个项目分组在同一组下
- listview - win32 列表视图(公共控件 6)上的 LVM_ENABLEGROUPVIEW 返回 0