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

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

Привет! Как сделать так , чтобы priority_queue сортировал по неубыванию ?

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

»
11 лет назад, # |
  Проголосовать: нравится +20 Проголосовать: не нравится

Спецификация шаблона очереди с приоритетами имеет следующий вид.

template <class Т, class Container = vector<T>,
	class Comp = less<Container::value_type>> class priority_queue

Следовательно тебе нужно поменять компаратор, чтобы изменился порядок сортировки. Например:

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

Сделает то, что ты хочешь

  • »
    »
    11 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    vector < int > — мы пишем , потому что priority_queue основан ( или написан ) на векторе ?

    • »
      »
      »
      11 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится

      Второй параметр шаблона — это контейнер, в котором хранятся элементы очереди с приоритетами.

      • »
        »
        »
        »
        11 лет назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится

        Теперь понятно. А в каких контейнерах хранятся: 1) set 2) multiset 3) map 4) multimap

        • »
          »
          »
          »
          »
          11 лет назад, # ^ |
            Проголосовать: нравится -14 Проголосовать: не нравится

          Я могу и ошибаться, но думаю, что память в них выделяется динамически под каждый элемент.

          • »
            »
            »
            »
            »
            »
            11 лет назад, # ^ |
              Проголосовать: нравится +5 Проголосовать: не нравится

            Яснопонятно. Спасибо за внимание.

            • »
              »
              »
              »
              »
              »
              »
              11 лет назад, # ^ |
                Проголосовать: нравится -9 Проголосовать: не нравится

              Ого как меня заминусили :) Кажись я не прав — так поправьте меня кто-нибудь. Самому интересно знать

              • »
                »
                »
                »
                »
                »
                »
                »
                11 лет назад, # ^ |
                  Проголосовать: нравится 0 Проголосовать: не нравится

                У них у всех внутри _Rb_tree

                • »
                  »
                  »
                  »
                  »
                  »
                  »
                  »
                  »
                  11 лет назад, # ^ |
                    Проголосовать: нравится 0 Проголосовать: не нравится

                  А, ну да :) А как хранятся в STL элементы _Rb_tree?

                • »
                  »
                  »
                  »
                  »
                  »
                  »
                  »
                  »
                  11 лет назад, # ^ |
                  Rev. 2   Проголосовать: нравится +11 Проголосовать: не нравится

                  У них у всех внутри _Rb_tree

                  Этого, конечно, стандарт не требует. Бывали и AVL имплементации

»
11 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Добавлять не x, а -x.

  • »
    »
    11 лет назад, # ^ |
    Rev. 3   Проголосовать: нравится +1 Проголосовать: не нравится

    Да это же извращенство, не понимаю тех, кто так пишет — такое очень неудобно читать.

    А еще с числом -2147483648 можно залететь.