C/C++ Ready | Программирование
15.5K subscribers
1.47K photos
94 videos
728 links
Авторский канал по разработке на C и C++.
Ресурсы, гайды, задачи, шпаргалки.
Информация ежедневно пополняется!

Cотрудничество: @energy_c

РКН: https://clck.ru/3QREHc
Download Telegram
Парсим аргументы командной строки без крашей!

Сейчас научимся безопасно читать аргументы из командной строки — без лишних копий и с максимальной гибкостью. Это пригодится при написании утилит, обработке 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++ стилем.

📣 C++ Ready | #практика
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥33❤10👍7
This media is not supported in your browser
VIEW IN TELEGRAM
😎 Simplify C++ — это онлайн-блог о том, как писать по-настоящему простой современный код!

Здесь собраны статьи о современных возможностях языка, советы по Clean Code и рефакторингу, гайды по CMake, Conan и Docker для рабочего окружения и др.

📌 Оставляю ссылочку: why-simplify-cpp

📣 C++ Ready | #ресурс
Please open Telegram to view this post
VIEW IN TELEGRAM
❤17👍6🔥5🤝2
👩‍💻 Сегодня разберем алгоритм топологической сортировки — способ упорядочить вершины графа с учётом зависимостей!

Он гарантирует, что каждая вершина идёт после всех, от кого зависит — идеально для планирования задач.

Ключевые моменты:

• Используем DFS для обхода графа.

• После обработки всех потомков вершины — добавляем её в список.

• В конце переворачиваем полученный порядок.


Алгоритм применяется при решении задач с зависимостями, например: сборка проектов или организация процессов.

📣 C++ Ready | #алгоритмы
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
❤️ Нашёл годную статью — реализация «Game of Life», где вся логика выполняется на этапе компиляции!

В этой статье:

• Использование consteval для вычислений во время компиляции
• Настройка компилятора MSVC под Windows: vcvars64.bat, /std:c++latest
• Реализация логики Game of Life на 16×16 сетке с wrap-around

🔊 Советую продолжить читать на Habr!


📣 C++ Ready | #статья
Please open Telegram to view this post
VIEW IN TELEGRAM
❤15👍7🔥6🤝1
Что же выведет консоль?
Anonymous Quiz
41%
A
30%
B
18%
C
11%
D
❤7👍6🔥5
👩‍💻 Серия роликов по продвинутым плюсам!

Вы прокачаете навыки разработки на C++: работа с памятью, ООП, шаблоны, STL, исключения, многопоточность и оптимизация

Ссылочка на плейлист: YouTube 🖤


📣 C++ Ready | #курс
Please open Telegram to view this post
VIEW IN TELEGRAM
❤16🔥8👍2👎2
Останавливаем потоки безопасно с std::jthread

Сейчас научимся правильно завершать потоки в 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
Поток завершён корректно.


🔥 Таким образом ты можешь писать потоки проще — с автоматическим управлением и встроенной остановкой.

📣 C++ Ready | #практика
Please open Telegram to view this post
VIEW IN TELEGRAM
❤13🔥10👍8😁1