C++ 相对于使用堆,使用带有insert()的向量作为优先级队列的开销是多少?(c+;+;)

C++ 相对于使用堆,使用带有insert()的向量作为优先级队列的开销是多少?(c+;+;),c++,performance,vector,heap,overhead,C++,Performance,Vector,Heap,Overhead,我目前正在从事一个项目,在这个项目中,我实现了一个结构指针向量,用作优先级队列。我使用for循环确定向量中的位置(如果不小于后面),然后使用insert()将结构指针放置在队列中的位置。我使用back()作为队列的前端,因此我可以维护向量的pop功能 我只是想确定使用堆库是否会增加速度,因为这个项目依赖于时间。如果您愿意,可以提供代码,堆/向量的大小可能会大大增加,因为这是一个hanoi a*搜索算法塔 我想如果有人马上知道的话,我也会要求将来的知识来帮我保存一些调试断点洗牌。我做了一个简单的基

我目前正在从事一个项目,在这个项目中,我实现了一个结构指针向量,用作优先级队列。我使用for循环确定向量中的位置(如果不小于后面),然后使用
insert()
将结构指针放置在队列中的位置。我使用
back()
作为队列的前端,因此我可以维护向量的pop功能

我只是想确定使用堆库是否会增加速度,因为这个项目依赖于时间。如果您愿意,可以提供代码,堆/向量的大小可能会大大增加,因为这是一个hanoi a*搜索算法塔


我想如果有人马上知道的话,我也会要求将来的知识来帮我保存一些调试断点洗牌。

我做了一个简单的基准测试,首先将
N
random
int
s插入优先级队列,然后弹出
N
顶部元素

预计,当队列大小较小时,使用线性搜索的排序
std::vector
获胜,当队列大小较大时,实现为具有
O(logn)
最坏情况插入时间的最大堆的
std::priority_queue
获胜


可以找到基准代码。

为什么不直接使用?您的需求的哪些部分导致您自己实现它?很难说清楚
vector
的连续数据使插入操作出奇地快。
std:priority\u queue