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

Автор: @energy_it

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

Реклама на бирже: https://telega.in/c/cpp_ready
Download Telegram
👩‍💻 Форматируем свои типы!

Позволяет красиво выводить структуры без лишних костылей. Пользователь сам выбирает стиль, а вы контролируете, как объект превращается в строку. Всё просто и удобно.

📣 C++ Ready | #шпора
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥12👍76👎3
Что же выведет консоль?
Anonymous Quiz
57%
A
16%
B
15%
C
12%
D
5👍4🔥3
👩‍💻 Осваиваем новые трюки со span!

Сегодня покажу, как получать байты, задавать фиксированные размеры и передавать диапазоны в алгоритмы без лишних усилий.

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

Байтный вид быстро;

Фиксированная длина экономит;

Легко сортировать напрямую.


Это продолжение прошлого гайда
— теперь span раскроется на полную силу.

📣 C++ Ready | #гайд
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥11👍64
Асинхронное чтение файлов с std::async!

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

С std::async это делается парой строк и возвращающимся std::future.
#include <fstream>
#include <future>
#include <string>

// Читает весь файл в строку
std::string readFile(const std::string& path) {
std::ifstream in(path);
return { std::istreambuf_iterator<char>(in), {} };
}


Вызовем чтение сразу двух файлов параллельно и дождёмся результата:
auto fut1 = std::async(std::launch::async, readFile, "config.json");
auto fut2 = std::async(std::launch::async, readFile, "data.log");

// Здесь можно выполнять другие задачи...

std::string config = fut1.get();
std::string logs = fut2.get();


🔥 Таким образом вы распараллеливаете I/O-операции без явных потоков или сложных библиотек. Как только оба future будут готовы, вызов get() вернёт содержимое файлов.

📣 C++ Ready | #практика
Please open Telegram to view this post
VIEW IN TELEGRAM
👍125🔥3
👩‍💻 Дерево Фенвика для быстрых сумм!

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

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

Хранит частичные куски;

Обновляет несколько позиций;

Быстро считает префиксы.


Дерево Фенвика удобно, просто реализуется и эффективно решает задачи с частыми обновлениями и запросами.

📣 C++ Ready | #алгоритмы
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥134👍4
Умные указатели и static_pointer_cast: безопасный кастинг!

Когда у вас есть std::shared_ptr<Base>, который на самом деле указывает на объект Derived, можно безопасно «опустить» указатель до производного типа:
#include <memory>
#include <iostream>

struct Base {
virtual ~Base() = default;
virtual void info() { std::cout << "Base\n"; }};

struct Derived : Base {
void specific() { std::cout << "Derived specific\n"; }};

auto basePtr = std::make_shared<Derived>();
// shared_ptr<Base> на Derived


Здесь basePtr действительно содержит Derived, но тип хранится как shared_ptr<Base>.

Теперь выполним кастинг и вызовем методы производного класса:
auto derivedPtr = std::static_pointer_cast<Derived>(basePtr);
derivedPtr->specific(); // Derived specific
derivedPtr->info();
// Base, метод из базового класса


🔥 Это позволяет безопасно преобразовать shared_ptr между совместимыми типами и избежать небезопасных C-стиля кастов и проверок на nullptr.

📣 C++ Ready | #практика
Please open Telegram to view this post
VIEW IN TELEGRAM
7👍5🔥4👎1
👩‍💻 Распознаём текст из изображений в консоли!

Утилита пригодится, если нужно быстро извлечь текст из скриншота, фото или PDF-страницы.

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

Работает с картинками;

Поддерживает русский язык;

Запускается через терминал.


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

📣 C++ Ready | #задача
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍167🔥3👎1