Часть 3. Добавляем очередь с приоритетами

Поделиться
HTML-код
  • Опубликовано: 30 сен 2024
  • Пишем алгоритм Хаффмана на C++.
    1 часть: • Часть 1. Пишем алгорит...
    2 часть: • Часть 2. Сам алгоритм ...

Комментарии • 28

  • @victorkrasnov5576
    @victorkrasnov5576 3 года назад +1

    А лямбдушка лаконичнее функтора :P

    • @IExSet
      @IExSet 3 года назад

      Вот вот. Вместо фрэндового класса думаю допустимо сделать getter метод get_freq(), зачем служебной структуре скрывать частоту ?
      int get_freq() const {
      return frequency;
      }
      Тогда лямбдушка получается:
      auto lowestPriorityFn = [](NodeType& nd1, NodeType& nd2) { return nd1.get_freq() > nd2.get_freq(); };
      std::priority_queue queue(lowestPriorityFn);
      При этом Node шаблонизируется типом данных (в данном случае char), и NodeType - это decltype от некого конкретного auto node = Node{'a',1}
      Node nd = { 'a',2 };
      using NodeType = decltype(nd);

  • @user-pk6rw9tw3m
    @user-pk6rw9tw3m 4 года назад +1

    Спасибо, Дарья. Продолжайте в том же духе. Здоровья вам и сил на продолжение уроков. Монтаж как всегда отменный )

    • @DariaEmacs
      @DariaEmacs  4 года назад

      Спасибо большое 🥰!

  • @DmitryDolganov
    @DmitryDolganov 4 года назад +1

    Привеет!!! Спасибо тебе за класснейшии лекции!

    • @DariaEmacs
      @DariaEmacs  4 года назад

      Вам спасибо), если не шутите)).

  • @teastrum
    @teastrum 4 года назад +1

    А какой алгоритм или код Хаффмана срабатывает, когда надо девушек вперёд в очереди пропускать?

    • @avazart614
      @avazart614 4 года назад +1

      Только красивых у них приоритет )))

    • @СергейКулаков-о1и
      @СергейКулаков-о1и 4 года назад

      На тот свет бро)))))

    • @teastrum
      @teastrum 4 года назад

      @@СергейКулаков-о1и жестоко. Я думал, дверь придержать в лифте до заполнения стек

    • @СергейКулаков-о1и
      @СергейКулаков-о1и 4 года назад +1

      Все правильно вы подумали, только не стека, а шахты лифта))))

  • @claudimdmc137
    @claudimdmc137 3 года назад

    нет желания как нибудь снять видео про алгоритмы криптографического шифрования? тот же blowfish например. спасибо

    • @DariaEmacs
      @DariaEmacs  3 года назад

      Спасибо, я подумаю:)

  • @avazart614
    @avazart614 4 года назад

    1. Под "намного интереснее" понимается десять раз переписывать код из-за не правильного проектирования? Да это намного интереснее )) Но думаю это не то интереснее к которому стоит стремиться. В любом случае ОК посмотрим чем закончится.
    2. Очередь с приоритетами это не контейнер это адаптер к контейнеру.
    3. Вместо uchar можно использовать std::byte ну или uint8_t
    3. Как я помню в некоторых реализация есть доступ к внутреннему контейнеру но ясное дело это не стандарт и возникает вопрос не стоит ли использовать вместо такой очереди обычный вектор и вставлять через insert с поиском позиции через std::lower_bound ясное дело с reservе. Ну и вообще почему очередь а не что либо другое?
    4. Не оператор "меньше-меньше" а оператор сдвига влево или вывода в поток.

    • @DariaEmacs
      @DariaEmacs  4 года назад +2

      Спасибо, Кэп).
      Именно здесь std::byte не удобен. Его не распечатаешь нормально, придется везде static_cast делать.

    • @avazart614
      @avazart614 4 года назад

      @@DariaEmacs Ок с std::byte понятно. В любом случае не понятно для чего Вам очередь с приоритетами, ведь дальше наверное все равно будет дерево строится....

  • @ffunktor
    @ffunktor 4 года назад

    Пробовала Rust? Если да, то как он тебе? :)

    • @DariaEmacs
      @DariaEmacs  4 года назад

      Нет). Попробовать?

    • @ffunktor
      @ffunktor 4 года назад

      @@DariaEmacs было бы интересно узнать твоё мнение о нём. Говорят, что он может стать заменой C++. Майкрософт хорошо о нем отзывается: habr.com/ru/post/506598/

    • @avazart614
      @avazart614 4 года назад

      @@ffunktor ruclips.net/video/E9-scyUdmeI/видео.html

    • @ffunktor
      @ffunktor 4 года назад

      @@alisa.corporation ну так, типа...не можешь победить - возглавь :)

  • @user-pk6rw9tw3m
    @user-pk6rw9tw3m 4 года назад

    Приятно видеть профессионала, а не теперяшних, которые уже даже код чужой слепить не могут нормально.

    • @DariaEmacs
      @DariaEmacs  4 года назад

      😊❤️!

    • @alexk3929
      @alexk3929 3 года назад

      Теперешние на С++ и на Си не пишут, современные проблемы современно решаются. И это хорошо на самом деле, память то се это конечно хорошо, но время дороже, а железки и так мощные уже сегодня.

    • @user-pk6rw9tw3m
      @user-pk6rw9tw3m 3 года назад

      @@alexk3929 ага, конечно) от того нам эксплуатирующим этот код столько головняков) тяп-ляп и в продакшен, знакомо)

    • @alexk3929
      @alexk3929 3 года назад

      @@user-pk6rw9tw3m не знаю, тестирование никто не отменял, я вообще убежден, что качественную программу даже углубленно тестировать не обязательно, поскольку если нормальная архитектура и логика проекта, то там все и так будет ок. На Си же, к сожалению, ошибка на ошибке и костыль на костыле, нас в универе заставляют на нем писать, говорят, надо отмучаться год и потом забудете нафиг.

    • @user-pk6rw9tw3m
      @user-pk6rw9tw3m 3 года назад

      @@alexk3929 продолжу вашу мысль: вообще, от каких-то программистов-профессионалов я уже слышал, что "...отладчик не нужен!" ) Если экономят на разработчиках, то и на тестировке почему-бы не сэкономить, а допилить программу уже во время эксплуатации, заодно на саппорте заработать ) Язык программирования - это инструмент, которым нужно уметь пользоваться! Если вам не идет Си, значит вы не можете/не умеете решать с помощью его поставленную задачу! Он не хороший и не плохой. А в существовании "нормальной архитектуры и логики проекта" я не верю. Верю в то, что недостаточная квалификация "программиста мышкой" любую архитектуру испоганит ) впрочем я не программист, откуда мне знать )