我有一个带声明的优先级队列
priority_queue<<Node>,vector<Node>,myComp> openQ
Run Code Online (Sandbox Code Playgroud)
我正在插入节点对象.但有时我必须从中删除元素.(不要删除顶部元素)
目前要删除它我弹出元素并将其放入数组.如果需要最顶层的元素,那么期望它推送数组中的其他元素.
这就像线性搜索和删除.我知道它效率不高,我正在寻找更好的方法
priority_queueclass用于使用优先级队列.它旨在删除具有pop功能的元素.如果你想获得不同的行为,你应该使用不同的类.例如,std::map.
如果您准备手动控制队列的一致性,您可以查看std::make_heap.使用它创建最大堆很容易.但在这种情况下,每次要删除元素时都需要手动重建队列.