Многие из этих ответов основаны на кодировании / использовании многих тайных функций C ++. Это нормально, веселье и средства дорогих программистов. Прямое решение, быстрое, дешевое в программировании, но более дорогое в работе:
//
// Only use this routine when developing code, NOT for production use!!
//
// Note. _pq is in private for a class that uses the priority queue
// and listQueue is a public method in that same class.
//
void listQueue() {
// allocate pointer to a NEW container
priority_queue<int>* new_pq = new priority_queue<int>;
while (!_pq->empty()) {
int el = _pq->top();
cout << "(" << el << ")" << endl;
new_pq->push(el);
_pq->pop();
} // end while;
// remove container storage
delete(_pq);
// viola, new container same as the old
_pq = new_pq;
} // end of listQueue;
Кстати, кажется совершенно неразумным НЕ предоставлять итератор для priority_queue, особенно когда это контейнерный класс для структуры или.