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

Автор: @energy_it

Заявление в РКН: № 6382873737

Реклама на бирже: https://telega.in/c/cpp_ready
Download Telegram
👩‍💻 Разбираем span — безопасная невладеющая ссылка на участок памяти без копирования данных!

Позволяет удобно работать с массивами и другими последовательностями: проверять, пустой ли диапазон, получать количество элементов, быстро выделять начало, конец или середину без лишней возни с указателями и копированием.

📣 C++ Ready | #шпора
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥31👍54🤝3
Безопасные альтернативы nullptr и union: optional и variant в действии!

Иногда функция не может вернуть результат — элемент не найден, ошибка загрузки, невалидный ввод. Раньше приходилось использовать nullptr, -1, false или магические коды.

В современном C++ всё проще — используем std::optional и std::variant.

std::optional чётко указывает: значение может быть, а может и не быть.
std::optional<int> find(int x) {
if (x == 42) return x;
return std::nullopt;
}


Проверяем, найдено ли значение, прежде чем его использовать:
if (auto val = find(42))
std::cout << *val;


Если нужно вернуть один из нескольких типов — поможет std::variant.
std::variant<int, std::string> compute(bool ok) {
return ok ? 123 : "Ошибка";
}


Проверяем, какой тип находится внутри variant, и обрабатываем его:
if (std::holds_alternative<int>(r))
std::cout << std::get<int>(r);


🔥 Эти типы делают код безопаснее, понятнее и избавляют от старых хаков с union.

📣 C++ Ready | #практика
Please open Telegram to view this post
VIEW IN TELEGRAM
👍136🔥5👎3
👩‍💻 Сжатие строки с помощью zlib!

Показываем, как сжать и восстановить строку в памяти с использованием библиотеки zlib — простой и эффективный способ уменьшить объём данных для хранения или передачи.

Что важно:

compressBound помогает заранее выделить буфер нужного размера.

std::vector<uint8_t> — удобный контейнер для хранения сжатых байтов.

Храним оригинальную длину строки, чтобы точно разжать обратно.


В примере: строка 43 байта → сжатие до 34 байт → восстановление обратно в 43 байта. Проверяем идентичность — всё работает.

📣 C++ Ready | #задача
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥14👍86🤝2
👋🏼 Приветствую!

Ровно год назад я создал этот канал и не только (не важно что 9 марта, главное первый пост был 8 сентября 😁).

Спасибо всем кто подписан на мои плюсы, особенно благодарю тех, кто ставит реакции.

👩‍💻 За это время контент намного стал лучше, с таких постов, до таких как сейчас.

Но кстати всё равно, раньше тоже круто было, можете перейти в закреп и там посмотреть на старые постики.

В общем, поздравляю сам себя с годовщиной! 🥳
Please open Telegram to view this post
VIEW IN TELEGRAM
4👍6918🔥17😁3
This media is not supported in your browser
VIEW IN TELEGRAM
❤️ OpenGenus IQ — живая энциклопедия статей, шпаргалок и мини-проектов!

На странице-теге собраны сотни лаконичных материалов: от азов STL и умных указателей до продвинутого Boost.Asio, шаблонного программирования и алгоритмов. Есть учебные проекты, интервью-шпоры и регулярные “Daily 43” задачки.

📌 Оставляю ссылочку: opengenus.org

📣 C++ Ready | #ресурс
Please open Telegram to view this post
VIEW IN TELEGRAM
9🔥8👍4😁1
👩‍💻 Сегодня разбираем execution — скрытая сила параллельных алгоритмов STL

Параллельные и векторные политики позволяют разгонять вычисления без переписывания кода.

Что важно знать:
par — для CPU-bound задач;

par_unseq — многопоточность + SIMD;

прирост заметен на больших массивах.


Параллельные алгоритмы STL — это ускорение «по щелчку» без ручного TBB или OpenMP.

📣 C++ Ready | #гайд
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥239👍4
std::expected в C++23: элегантные ошибки без try/catch!

Когда нужен результат или описание проблемы, а ради одной-двух проверок не хочется плодить исключения — новый шаблон std::expected<T,E> приходит на помощь.

Напишем функцию, которая парсит число из строки и сообщает об ошибке текстом:
std::expected<int, std::string> parse_int(std::string_view s) {
int value{};
auto [ptr, ec] = std::from_chars(s.data(), s.data() + s.size(), value);
if (ec == std::errc{})
return value; expected<int>
return std::unexpected("Не число");
}


Используем результат без исключений и без bool-флагов:
auto n = parse_int("42");
if (n) { // аналог has_value()
std::cout << "OK: " << *n << '\n';
} else {
std::cout << "Ошибка: " << n.error() << '\n';
}


🔥 Результат: одно и то же выражение возвращает либо готовый int, либо понятное сообщение об ошибке — чёткое API и ноль накладных расходов на механизм исключений.

📣 C++ Ready | #практика
Please open Telegram to view this post
VIEW IN TELEGRAM
12🔥8👍5
👩‍💻 Разбираем std::atomic — обёртка над атомарными переменными для безопасного обмена данными между потоками без мьютексов!

Она позволяет атомарно записывать и считывать значения, обменивать их и возвращать прежнее, условно изменять содержимое с возможностью или без возможности ложного отказа

📣 C++ Ready | #шпора
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥185👍4👎1🤝1