Блог пользователя Yuliy

Автор Yuliy, 13 лет назад, По-русски

Объясните мне пожалуйста, что объявляет эта строка и хорошо ли так объявлять или можно короче?И чем отличаеться от обычной приоритетной очереди?

priority_queue<pair<int, int>, vector<pair<int, int> >, greater<pair<int, int> > > q;



  • Проголосовать: нравится
  • +3
  • Проголосовать: не нравится

13 лет назад, # |
Rev. 3   Проголосовать: нравится 0 Проголосовать: не нравится
Разбираемся.
priority_queue - очередь с приоритетом
первый параметр (pair<int, int>) - собственоо, что хранимю
второй параметр (vector<pair<int, int> >) - где храним.
третий параметр (greater<pair<int, int> >) - чем сравниваем. См. STL function objects. Наверху кучи будет наибольший элемент.
Так как второй и третий параметр совпадают со значениями по умолчанию, их можно опустить:
priority_queue<pair<int, int> > q;
  • 13 лет назад, # ^ |
      Проголосовать: нравится +11 Проголосовать: не нравится
    Значение по умолчанию для третьего параметра - less<pair<int,int> > а не greater. 
  • 13 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    Все-таки наверху кучи будет минимальный элемент, то есть доставаться будут в порядке возрастания. Подходит для дейкстры.
    • 13 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
      То есть куча у них тоже наоборот?
      • 13 лет назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится
        Ну, с компарером по умолчанию на вершине наибольший элемент. А что еще у них наоборот? :)
13 лет назад, # |
  Проголосовать: нравится +3 Проголосовать: не нравится
А вообще, если непонятно, что такое <> - можно почитать тут.
13 лет назад, # |
  Проголосовать: нравится +5 Проголосовать: не нравится
Насколько я знаю если мы хотим оставить дефолтное значение параметрам, то можно не указывать только несколько последних параметров, то есть указать третий и не указывать второй нельзя. Но 100% уверенности нет.
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Спасибо, вроде, разобрался.