【发布时间】:2020-03-10 19:33:43
【问题描述】:
我有两个版本的完全相同的程序,迷宫生成器,用 Python 和 C++ 编写。我在 Python 中优化后的想法是,如果我用 C++ 重写它,它会更快、更高效。然而,我发现了一件令人惊讶的事情(仔细想想,这并不奇怪)。对于 Python:我的算法从列表中选择一个随机项目,对其进行处理,然后从那里删除它。对于 C++:都一样,但我使用向量而不是列表。在 C++ 中从向量中删除元素比在 Python 中对列表执行相同操作要慢得多,因为当您删除它们时,向量的元素会发生变化。我的问题是:C++ 中最好的数据结构是什么,它可以比向量更快地被索引和删除其项目?
目前,C++ 的删除平均花费的时间是 Python 的 5-6 倍。
【问题讨论】:
-
为什么要选择随机元素?如果您从矢量的末端开始,按照自己的方式前进,您将获得最快的速度。
-
指针的 C++ 向量与 python
list完全相同。 -
那你可以先
shuffle向量,然后从向量的末尾开始,往前走 -
您在测量优化 C++ 构建的时间吗?当有人使用未优化的 C++ 构建时,我看到很多关于 C++ 与其他语言的性能的问题。默认情况下不启用 C++ 中的优化。
-
请复制/粘贴为文本替换图片。
标签: python c++ data-structures