Боюсь, STL priority_queue
не предлагает такой функциональности. Вы можете написать свой собственный класс кучи (что не так сложно). Вы можете даже использовать функции std::xxx_heap
, используя такие хитрости:
delete_heap(iterator to_delete, iterator heap_begin, iterator heap_end)
{
to_delete->key = something that would compare less to everything; // make sure it gets to the top in the next step
std::push_heap(heap_begin, to_delete+1);
std::pop_heap(heap_begin, heap_end);
}
, что даст вам O(log n)
удалить.