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
❤17👍6🔥5🤝2
Он гарантирует, что каждая вершина идёт после всех, от кого зависит — идеально для планирования задач.
Ключевые моменты:
• Используем DFS для обхода графа.
• После обработки всех потомков вершины — добавляем её в список.
• В конце переворачиваем полученный порядок.
Алгоритм применяется при решении задач с зависимостями, например: сборка проектов или организация процессов.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥20❤8👍7🤝3👎1
В этой статье:
• Использование consteval для вычислений во время компиляции• Настройка компилятора MSVC под Windows: vcvars64.bat, /std:c++latest• Реализация логики Game of Life на 16×16 сетке с wrap-around🔊 Советую продолжить читать на Habr!
Please open Telegram to view this post
VIEW IN TELEGRAM
❤15👍7🔥6🤝1
❤7👍6🔥5
Останавливаем потоки безопасно с std::jthread
Сейчас научимся правильно завершать потоки в C++. Без
Для начала подключим библиотеки. Чтобы код был короче, добавим using namespace std:
Теперь напишем рабочую функцию. Она будет печатать счётчик каждую секунду. Когда придёт сигнал остановки, поток завершится сам:
Запускаем поток через
Вот что выведет программа:
🔥 Таким образом ты можешь писать потоки проще — с автоматическим управлением и встроенной остановкой.
📣 C++ Ready | #практика
Сейчас научимся правильно завершать потоки в C++. Без
detach, без ручного join, без флагов. Для начала подключим библиотеки. Чтобы код был короче, добавим using namespace std:
#include <iostream>
#include <thread>
#include <chrono>
using namespace std;
Теперь напишем рабочую функцию. Она будет печатать счётчик каждую секунду. Когда придёт сигнал остановки, поток завершится сам:
void worker(stop_token st) {
int tick = 0;
while (!st.stop_requested()) {
cout << "Tick " << tick++ << '\n';
this_thread::sleep_for(chrono::seconds(1));}
cout << "Поток завершён корректно.\n";
}Запускаем поток через
jthread. Ждём немного и просим его остановиться. Никаких join() вызывать не нужно — всё делается автоматически:int main() {
jthread t(worker);
this_thread::sleep_for(chrono::seconds(3));
t.request_stop();
}Вот что выведет программа:
Tick 0
Tick 1
Tick 2
Поток завершён корректно.
🔥 Таким образом ты можешь писать потоки проще — с автоматическим управлением и встроенной остановкой.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤13🔥10👍8😁1
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥16👍7❤6😁1