Вот вот. Вместо фрэндового класса думаю допустимо сделать 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);
1. Под "намного интереснее" понимается десять раз переписывать код из-за не правильного проектирования? Да это намного интереснее )) Но думаю это не то интереснее к которому стоит стремиться. В любом случае ОК посмотрим чем закончится. 2. Очередь с приоритетами это не контейнер это адаптер к контейнеру. 3. Вместо uchar можно использовать std::byte ну или uint8_t 3. Как я помню в некоторых реализация есть доступ к внутреннему контейнеру но ясное дело это не стандарт и возникает вопрос не стоит ли использовать вместо такой очереди обычный вектор и вставлять через insert с поиском позиции через std::lower_bound ясное дело с reservе. Ну и вообще почему очередь а не что либо другое? 4. Не оператор "меньше-меньше" а оператор сдвига влево или вывода в поток.
@@DariaEmacs Ок с std::byte понятно. В любом случае не понятно для чего Вам очередь с приоритетами, ведь дальше наверное все равно будет дерево строится....
@@DariaEmacs было бы интересно узнать твоё мнение о нём. Говорят, что он может стать заменой C++. Майкрософт хорошо о нем отзывается: habr.com/ru/post/506598/
Теперешние на С++ и на Си не пишут, современные проблемы современно решаются. И это хорошо на самом деле, память то се это конечно хорошо, но время дороже, а железки и так мощные уже сегодня.
@@user-pk6rw9tw3m не знаю, тестирование никто не отменял, я вообще убежден, что качественную программу даже углубленно тестировать не обязательно, поскольку если нормальная архитектура и логика проекта, то там все и так будет ок. На Си же, к сожалению, ошибка на ошибке и костыль на костыле, нас в универе заставляют на нем писать, говорят, надо отмучаться год и потом забудете нафиг.
@@alexk3929 продолжу вашу мысль: вообще, от каких-то программистов-профессионалов я уже слышал, что "...отладчик не нужен!" ) Если экономят на разработчиках, то и на тестировке почему-бы не сэкономить, а допилить программу уже во время эксплуатации, заодно на саппорте заработать ) Язык программирования - это инструмент, которым нужно уметь пользоваться! Если вам не идет Си, значит вы не можете/не умеете решать с помощью его поставленную задачу! Он не хороший и не плохой. А в существовании "нормальной архитектуры и логики проекта" я не верю. Верю в то, что недостаточная квалификация "программиста мышкой" любую архитектуру испоганит ) впрочем я не программист, откуда мне знать )
А лямбдушка лаконичнее функтора :P
Вот вот. Вместо фрэндового класса думаю допустимо сделать 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);
Спасибо, Дарья. Продолжайте в том же духе. Здоровья вам и сил на продолжение уроков. Монтаж как всегда отменный )
Спасибо большое 🥰!
Привеет!!! Спасибо тебе за класснейшии лекции!
Вам спасибо), если не шутите)).
А какой алгоритм или код Хаффмана срабатывает, когда надо девушек вперёд в очереди пропускать?
Только красивых у них приоритет )))
На тот свет бро)))))
@@СергейКулаков-о1и жестоко. Я думал, дверь придержать в лифте до заполнения стек
Все правильно вы подумали, только не стека, а шахты лифта))))
нет желания как нибудь снять видео про алгоритмы криптографического шифрования? тот же blowfish например. спасибо
Спасибо, я подумаю:)
1. Под "намного интереснее" понимается десять раз переписывать код из-за не правильного проектирования? Да это намного интереснее )) Но думаю это не то интереснее к которому стоит стремиться. В любом случае ОК посмотрим чем закончится.
2. Очередь с приоритетами это не контейнер это адаптер к контейнеру.
3. Вместо uchar можно использовать std::byte ну или uint8_t
3. Как я помню в некоторых реализация есть доступ к внутреннему контейнеру но ясное дело это не стандарт и возникает вопрос не стоит ли использовать вместо такой очереди обычный вектор и вставлять через insert с поиском позиции через std::lower_bound ясное дело с reservе. Ну и вообще почему очередь а не что либо другое?
4. Не оператор "меньше-меньше" а оператор сдвига влево или вывода в поток.
Спасибо, Кэп).
Именно здесь std::byte не удобен. Его не распечатаешь нормально, придется везде static_cast делать.
@@DariaEmacs Ок с std::byte понятно. В любом случае не понятно для чего Вам очередь с приоритетами, ведь дальше наверное все равно будет дерево строится....
Пробовала Rust? Если да, то как он тебе? :)
Нет). Попробовать?
@@DariaEmacs было бы интересно узнать твоё мнение о нём. Говорят, что он может стать заменой C++. Майкрософт хорошо о нем отзывается: habr.com/ru/post/506598/
@@ffunktor ruclips.net/video/E9-scyUdmeI/видео.html
@@alisa.corporation ну так, типа...не можешь победить - возглавь :)
Приятно видеть профессионала, а не теперяшних, которые уже даже код чужой слепить не могут нормально.
😊❤️!
Теперешние на С++ и на Си не пишут, современные проблемы современно решаются. И это хорошо на самом деле, память то се это конечно хорошо, но время дороже, а железки и так мощные уже сегодня.
@@alexk3929 ага, конечно) от того нам эксплуатирующим этот код столько головняков) тяп-ляп и в продакшен, знакомо)
@@user-pk6rw9tw3m не знаю, тестирование никто не отменял, я вообще убежден, что качественную программу даже углубленно тестировать не обязательно, поскольку если нормальная архитектура и логика проекта, то там все и так будет ок. На Си же, к сожалению, ошибка на ошибке и костыль на костыле, нас в универе заставляют на нем писать, говорят, надо отмучаться год и потом забудете нафиг.
@@alexk3929 продолжу вашу мысль: вообще, от каких-то программистов-профессионалов я уже слышал, что "...отладчик не нужен!" ) Если экономят на разработчиках, то и на тестировке почему-бы не сэкономить, а допилить программу уже во время эксплуатации, заодно на саппорте заработать ) Язык программирования - это инструмент, которым нужно уметь пользоваться! Если вам не идет Си, значит вы не можете/не умеете решать с помощью его поставленную задачу! Он не хороший и не плохой. А в существовании "нормальной архитектуры и логики проекта" я не верю. Верю в то, что недостаточная квалификация "программиста мышкой" любую архитектуру испоганит ) впрочем я не программист, откуда мне знать )