C++ 相对于使用堆,使用带有insert()的向量作为优先级队列的开销是多少?(c+;+;)
我目前正在从事一个项目,在这个项目中,我实现了一个结构指针向量,用作优先级队列。我使用for循环确定向量中的位置(如果不小于后面),然后使用C++ 相对于使用堆,使用带有insert()的向量作为优先级队列的开销是多少?(c+;+;),c++,performance,vector,heap,overhead,C++,Performance,Vector,Heap,Overhead,我目前正在从事一个项目,在这个项目中,我实现了一个结构指针向量,用作优先级队列。我使用for循环确定向量中的位置(如果不小于后面),然后使用insert()将结构指针放置在队列中的位置。我使用back()作为队列的前端,因此我可以维护向量的pop功能 我只是想确定使用堆库是否会增加速度,因为这个项目依赖于时间。如果您愿意,可以提供代码,堆/向量的大小可能会大大增加,因为这是一个hanoi a*搜索算法塔 我想如果有人马上知道的话,我也会要求将来的知识来帮我保存一些调试断点洗牌。我做了一个简单的基
insert()
将结构指针放置在队列中的位置。我使用back()
作为队列的前端,因此我可以维护向量的pop功能
我只是想确定使用堆库是否会增加速度,因为这个项目依赖于时间。如果您愿意,可以提供代码,堆/向量的大小可能会大大增加,因为这是一个hanoi a*搜索算法塔
我想如果有人马上知道的话,我也会要求将来的知识来帮我保存一些调试断点洗牌。我做了一个简单的基准测试,首先将
N
randomint
s插入优先级队列,然后弹出N
顶部元素
预计,当队列大小较小时,使用线性搜索的排序std::vector
获胜,当队列大小较大时,实现为具有O(logn)
最坏情况插入时间的最大堆的std::priority_queue
获胜
可以找到基准代码。为什么不直接使用?您的需求的哪些部分导致您自己实现它?很难说清楚
vector
的连续数据使插入操作出奇地快。std:priority\u queue