Контейнеры типа priority_queue Отсюда видно, что по умолчанию очередь с приоритетами основана на контейнере типа vector и для сравнения приоритетов она использует предикат lesso. Для объектов класса Man — это внешняя friend-функция operator< (), которая упорядочивает последовательность по возрасту. Но очередь с приоритетами должна расставить элементы по убыванию приоритетов. Проверим это утверждение с помощью следующего фрагмента: void main () { //===== Priority queue (by age) priority_queue<Man> men; men.push (zoran); //== Для проверки поведения вставляем объект повторно men.push (zoran); men.push (joy); men.push (mela); men.push (win); cout«"priority_queue size: "«men. size () «endl; int i=0; while ('men.empty()) { cout « "\n"« ++i«". "«men.top(); men.pop(); } } Выходом этой программы будет такой текст: priority_queue size: 5 1. Winton Kelly, Age: 50 2. Zoran Todorovitch, Age: 27 3. Zoran Todorovitch, Age: 27 4. Joy Amore, Age: 18 5. Melissa Robinson, Age: 9 Как видно, объекты выстроены по убыванию возраста. Очереди и стеки допускают повторение элементов. |