Он находит кратчайшие пути даже при наличии отрицательных весов рёбер в графе.
Ключевые моменты:
• Инициализация расстояний: все бесконечны, кроме стартовой вершины.
• Повторное обновление: V−1 раз проходим все рёбра.
• Проверка цикла: ищем возможные отрицательные циклы.
Алгоритм медленнее Дейкстры, но работает надёжно даже в сложных условиях.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥31❤8👍5🤝1
Перегрузив operator(), мы делаем экземпляр класса вызываемым как обычную функцию и получаем «функтор» с собственным состоянием и логикой.
Что важно знать:
• Хранит данные прямо внутри «функции»
• Удобно передавать в алгоритмы STL.
• Работает там, где нужны колбэки с параметрами и запоминанием контекста.
Поэтому функторы делают код гибким и выразительным, особенно при работе с алгоритмами и шаблонами.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥27🤝9❤7👍3
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥64❤8👍6🤝4
Сегодня реализуем алгоритм сжатия строк с помощью RLE (Run-Length Encoding), а также восстановление строки из сжатого представления.
В этой задаче:
• Считаем длину последовательностей одинаковых символов и сразу добавляем в результат
• При распаковке парсим число и столько раз добавляем следующий символ.
• Проверяем корректность: сжимаем → распаковываем → сравниваем строки.
Такой приём особенно полезен для логов, графики и повторяющихся данных, где он экономит место.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤17🔥13🤝9👍4
This media is not supported in your browser
VIEW IN TELEGRAM
Выбирай, всё бесплатно:
База ежедневно обновляется
Please open Telegram to view this post
VIEW IN TELEGRAM
👎4👍2
Парсим аргументы командной строки без крашей!
Сейчас научимся безопасно читать аргументы из командной строки — без лишних копий и с максимальной гибкостью. Это пригодится при написании утилит, обработке CLI-параметров и скриптов.
Начнём с подключения нужных библиотек — они уже есть в стандартной библиотеке, и ничего дополнительно устанавливать не нужно:
Теперь напишем простую программу: с помощью
Допустим, мы запускаем программу вот так:
Вот что выведет программа при таком запуске:
🔥 Таким образом ты можешь безопасно обрабатывать аргументы командной строки — без копирования, крашей и с чистым C++ стилем.
📣 C++ Ready | #практика
Сейчас научимся безопасно читать аргументы из командной строки — без лишних копий и с максимальной гибкостью. Это пригодится при написании утилит, обработке CLI-параметров и скриптов.
Начнём с подключения нужных библиотек — они уже есть в стандартной библиотеке, и ничего дополнительно устанавливать не нужно:
#include <iostream>
#include <string_view>
#include <span>
Теперь напишем простую программу: с помощью
std::span
получим доступ ко всем аргументам, а std::string_view
позволит удобно их обрабатывать без создания лишних строк:int main(int argc, char* argv[]) {
std::span args(argv, argc);
for (std::string_view arg : args) {
std::cout << "Аргумент: " << arg << '\n';}
return 0;
}
Допустим, мы запускаем программу вот так:
./mytool input.txt --verbose
Вот что выведет программа при таком запуске:
Аргумент: ./mytool
Аргумент: input.txt
Аргумент: --verbose
🔥 Таким образом ты можешь безопасно обрабатывать аргументы командной строки — без копирования, крашей и с чистым C++ стилем.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥19❤7👍5
This media is not supported in your browser
VIEW IN TELEGRAM
Здесь собраны статьи о современных возможностях языка, советы по Clean Code и рефакторингу, гайды по CMake, Conan и Docker для рабочего окружения и др.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤7👍2🔥2