there are several techniques here. I have not experimented with any of them (I admit to not caring for some of the STL containers, like this one, which bring nothing but limitations with them. you can do a PQ in a vector or list without the limitations).
Is there a different way to reserve space for the vector
From Jonnin's link, I guess there is. TIL and thanks.
Honestly I suggest that you get rid of priority_queue, it's inadequate. Instead, call std::push/pop/make/sort_heap yourself. I quit using std::priority_queue several years ago, because every time I tried to use it, I had to rip it out later.
if you want performance, a 2-d thing of [priority class][normal queues or list/vector/other as-a-q] should be easy to cook up without having to do much more than wrap it (if you even want to stuff it into an object, not necessary to do that either). Cuts out the sorting via the bucket idea. It may not be memory efficient unless you really dig into rolling something out.