Приоритетные очереди. Пример использования

   
На этом шаге мы рассмотрим пример использования приоритетных очередей.

   
Пример использования класса priority_queue<>:

//---------------------------------------------------------------------------

#include <vcl.h>
#include <iostream>
#include <queue>

#include <conio.h>   //необходимо для getch()

#pragma hdrstop

//---------------------------------------------------------------------------

#pragma argsused
using namespace std;

std::string ToRus(const std::string &in)
{
  char *buff = new char [in.length()+1];
  CharToOem(in.c_str(),buff);
  std::string out(buff);
  delete [] buff;
  return out;
}

int main()
{

  priority_queue<float> q;

  // Вставка трех элементов в приоритетную очередь
  q.push(66.6);
  q.push(22.2);
  q.push(44.4);

  // Вывод и удаление двух элементов
  cout << ToRus("Извлечение и вывод двух элементов из очереди: \n");
  cout << q.top() << ' ';
  q.pop();
  cout << q.top() << endl;
  q.pop();

  // Вставка еще трех элементов
  q.push(11.1);
  q.push(55.5);
  q.push(33.3);

  // Удаление одного элемента
  q.pop();

  // Извлечение и вывод оставшихся элементов
  cout << ToRus("Извлечение и вывод оставшихся элементов: \n");
  while (!q.empty()) {
      cout << q.top() << ' ';
      q.pop();
  }
  cout << endl;


  getch();
  return 0;
}

//---------------------------------------------------------------------------

Текст этого примера можно взять здесь.

   
Результат выполнения программы выглядит так:


Рис.1. Результат работы приложения

   
Как видите, после вставки значений 66.6, 22.2 и 44.4 программа считает старшими элементами 66.6 и 44.4. После вставки еще трех элементов
приоритетная очередь содержит значения 22.2, 11.1, 55.5 и 33.3 (в порядке вставки). Следующий элемент просто удаляется вызовом рор(),
поэтому итоговый цикл выводит значения 33.3, 22.2 и 11.1 именно в этом порядке.

   
На следующем шаге мы приведем строение класса priority_queue.



Вы можете оставить комментарий, или Трекбэк с вашего сайта.

Оставить комментарий