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

Автор: @energy_it

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

Реклама на бирже: https://telega.in/c/cpp_ready
Download Telegram
👩‍💻 Итераторы-адаптеры для чистого кода!

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

Что важно знать:

Подстраиваются под контейнер;

Подходят для потоков;

Упрощают алгоритмы STL.


Убирают лишний код и делают стандартные алгоритмы удобными даже для нестандартных случаев.

📣 C++ Ready | #гайд
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥1811👍4🤝2
👩‍💻 Создаем мини-планировщик задач!

40 строк кода превращают JSON-расписание в работающий планировщик, который тихо запускает ваши скрипты вовремя.

Что важно знать:

Один файл исходника;

Любой POSIX-шёлл;

Работает офлайн.


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

📣 C++ Ready | #задача
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥134👍3🤝1
😎 Захватывающая статья о том, как один энтузиаст своими силами организовал турнир по программированию на отечественной платформе «Эльбрус»

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

🔊 Продолжай читать на Habr!


📣 C++ Ready | #статья
Please open Telegram to view this post
VIEW IN TELEGRAM
115🔥6👍4👎1
std::optional как альтернатива «магическим» значениям!

Иногда функции возвращают -1, 0 или nullptr, чтобы указать «нет результата» — и вы потом годами отлавливаете баги, когда забыли проверить этот «волшебный» код.

C++ предлагает более безопасный способ — std::optional<T>. Вместо -1 или nullptr вы явно показываете, что результат может отсутствовать, и заставляете пользователей API проверять это.

Определим функцию find_index, возвращающую std::optional<size_t>
std::optional<size_t> find_index(const std::vector<int>& v, int x) {
for (size_t i = 0; i < v.size(); ++i)
if (v[i] == x)
return i; // нашли — возвращаем индекс
return {}; // не нашли — пустой optional
}


Используем эту функцию в main и обрабатываем результат
int main() {
std::vector<int> data = {10, 20, 30};

if (auto idx = find_index(data, 20)) {
std::cout << "Найдено в позиции " << *idx << "\n";
} else {
std::cout << "Элемент не найден\n";
}
}


🔥 std::optional делает код самодокументируемым, избавляет от «магических» значений и принуждает явно обрабатывать отсутствие результата.

📣 C++ Ready | #практика
Please open Telegram to view this post
VIEW IN TELEGRAM
👍129🔥4
👀 Не хочешь плодить кучу bool-флагов, union-ов и typeid()-проверок?

Используй std::variant — безопасную и современную замену union, которая может хранить значения разных типов одновременно, но только одно за раз.

В примере get_value() возвращает либо int, либо std::string, а std::visit вызывает нужный обработчик в зависимости от типа.

Полная безопасность типов на этапе компиляции, без if-ов, switch-ей и dynamic_cast.

🔥 Идеально для случаев, когда значение может быть одним из нескольких — без изобретений на месте.

📣 C++ Ready | #совет
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12🔥75
👩‍💻 Structured bindings: распаковка данных без шума!

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

В этом посте:

Упрощают доступ к частям сложных объектов;

Работают с парами, кортежами и структурами;

Удобны в циклах и функциях с множеством выходов.


Теперь можно забыть про .first, std::get и другие лишние обёртки.

📣 C++ Ready | #гайд
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🤝14🔥76
🤨 Сколько раз ты делал три перегрузки ради vector, array и «сырого» массива?

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

Что получает функция print() из примера:
Унификация — принимает и std::vector, и std::array, и T[N], и пару указателей.

Размер внутри — длина уже хранится в span, никаких size отдельно.

Ноль оверхеда — только два слова (ptr + size) на стеке


🔥 Важно: span не владеет данными. Он «живёт» лишь пока жив исходный контейнер или массив.

📣 C++ Ready | #совет
Please open Telegram to view this post
VIEW IN TELEGRAM
14👍6🔥3