我目前正在从事一个项目,我在该项目中实现了一个结构指针 vector 以用作优先级队列。我使用 for 循环来确定 vector 中的位置(如果不小于后面),然后使用 insert()
将结构指针放置在队列中的位置。我使用 back()
作为队列的前端,这样我就可以保持 vector 的弹出功能。
我只是想确定使用堆库是否会增加速度,因为这个项目取决于时间。如果您愿意,可以提供代码,堆/vector 的大小可能会大大增加,因为这是一个汉诺塔 A* 搜索算法。
如果有人知道的话,我想我也会询问 future 的知识,以便为我节省一些调试断点洗牌。
最佳答案
我做了一个简单的基准测试,首先将 N
个随机 int
插入优先级队列,然后弹出 N
个顶部元素。
预期,当队列较小时,使用线性搜索排序的 std::vector
获胜,而 std::priority_queue
实现为最大堆O(log N)
最坏情况插入时间,当队列大时获胜。
基准代码可见here .
关于c++ - 相对于使用堆,使用带有 insert() 的 vector 作为优先级队列的开销是多少? (c++),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58762157/