на начало
На главную страницу
Форум   

Статья :: Контейнеры типа priority_queue

 

Контейнеры типа priority_queue

Очередь с приоритетами тоже является адаптером, который позволяет вставку элементов, инспекцию и удаление верхнего (top) элемента. Она не допускает итераций прохода по своим элементам. Ее характерным отличием является то, что верхний элемент является самым большим в том смысле, в котором в шаблоне используется функциональный объект (Compare — сравнение объектов). Для разнообразия приведем объявление шаблона:

template

<

class Type,

class Container=vector<Type>,

class Compare=less<typename Container : : value__type>

>

Отсюда видно, что по умолчанию очередь с приоритетами основана на контейнере типа 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

Как видно, объекты выстроены по убыванию возраста. Очереди и стеки допускают повторение элементов.

 

Контейнеры типа priority_queue

страницы в данном разделе 
Урок 10. Из жизни студентов Из жизни студентов
Использование STL Шаблоны
Шаблон функции быстрой сортировки Шаблоны классов
Контейнеры библиотеки STL Последовательности типа vector
Поиск с помощью предиката Связыватели и адаптеры
Последовательности типа deque Последовательности типа list
Ассоциативные контейнеры Контейнер типа set
Контейнеры типа map Контейнеры типа hash_multimap
Стек — это несложно Контейнеры типа queue
Контейнеры типа priority_queue Работа с потоками
Примеры использования string Полезные константы
Шаблон классов valarray Сечения массива


Содержание сайта (выборка)
Apache
Протоколы TCP/IP (принципы, протоколы и архитектура)



PHP, PELR, JSP
PHP
JavaServer Pages (JSP)

Базы данных
Основы mysql
СУБД INFORMIX
СУБД POSTGRES
Основы проектирования реляционных баз данных

HTML, javascript
Спецификация HTML 4.01
Каскадные Таблицы Стилей, Уровень 2
Клиентский JavaScript. Справочник.
JavaScript руководство пользователя
Серверный JavaScript 1.4. Руководство по Использованию.

Паскаль, C, C++, C#
GCC (примеры)
FAQ Валентинa Озеровa DELPHI
C



 
© faq.pp.ru, справочник программиста