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

Автор: @energy_it

Реклама на бирже: https://telega.in/c/cpp_ready
加入频道
👩‍💻 Таймер с прогресс-баром!

Консольная утилита, которая с помощью Boost.Progress визуально отображает обратный отсчёт заданного числа секунд.

Важно помнить:

Прогресс-бар наглядно отражает состояние выполнения заданного таймера.

Гибкое перенаправление вывода позволяет интегрировать бар куда угодно.

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


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

📣 C++ Ready | #задача
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥208👍5🤝1
🐱 Отличная статья — вводный туториал по созданию простого 3D-движка!

В этой статье:
• Пошаговая настройка среды и сохранение картинки в формате PPM
• Отрисовка карты уровня в виде сетки из прямоугольников
• Добавление игрока на карту с простыми координатами

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


📣 C++ Ready | #статья
Please open Telegram to view this post
VIEW IN TELEGRAM
14👍5🔥4
👩‍💻 Разберем string_view — лёгкая невладеющая ссылка на часть строки без копирования данных!

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

📣 C++ Ready | #шпора
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
8🔥7🤝5👍4
👩‍💻 Многопоточность и асинхронное программирование!

В курсе подробно разбираются инструменты параллельного программирования: создание потоков через std::thread, работа с мьютексами и блокировками, использование std::async, future и promise для асинхронных операций

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


📣 C++ Ready | #курс
Please open Telegram to view this post
VIEW IN TELEGRAM
11👍5🔥3
Пользовательские аллокаторы в STL: управляем памятью сами!

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

Для этого в C++ можно использовать пользовательские аллокаторы — и подставлять их в стандартные контейнеры, такие как std::vector.

Сначала создадим минимальный аллокатор с логированием:
template <typename T>
struct LoggingAllocator {
using value_type = T;

T* allocate(std::size_t n) {
std::cout << "alloc " << n << '\n';
return static_cast<T*>(::operator new(n * sizeof(T)));
}


Здесь allocate просто выводит сообщение и выделяет память обычным способом. Теперь добавим освобождение:
    void deallocate(T* p, std::size_t) noexcept {
std::cout << "free\n";
::operator delete(p);
}};


Теперь можем использовать аллокатор с std::vector:
std::vector<int, LoggingAllocator<int>> v;
v.push_back(1);
v.push_back(2);


🔥 Это позволяет наглядно контролировать выделение памяти, а также легко внедрять собственные стратегии аллокации.

📣 C++ Ready | #практика
Please open Telegram to view this post
VIEW IN TELEGRAM
👍156🔥5
Что же выведет консоль?
Anonymous Quiz
75%
A
9%
B
12%
C
3%
D
👍146🔥4
👩‍💻 Разберем std::span — лёгкое представление, не владеющее данными!

Позволяет представлять и передавать срезы элементов (обёртка над массивом/вектором/указателем+размером) без лишних копий.

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

Не владеет данными — он хранит лишь указатель и длину; контейнер должен жить дольше span, иначе — UB.

Синтаксис: std::span<T> (динамическая длина) и std::span<T, N> (фиксированная длина).

Конструкторы принимают std::array, std::vector, C-массив или pointer+size


Удобно для передачи срезов без копирования, главное — не допускать dangling и отдавать span<const T> для чтения.

📣 C++ Ready | #гайд
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥18👍75
📂 Напоминалка по netcat (nc) — универсальному сетевому «швейцарскому ножу»

Лёгкая утилита-«швейцарский нож» для TCP/UDP и UNIX-сокетов: слушает/устанавливает соединения, пересылает файлы, делает обратные оболочки, стримит и сканирует порты/граббинг баннеров.

Часто комбинируют с openssl, tar, dd для шифрования, архивации и клонирования.

📣 C++ Ready | #ресурс
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🔥74
👩‍💻 Сегодня разберем дерево отрезков — мощную структуру данных!

Она применяется для быстрых операций над массивами: получение информации на отрезке и обновление значений. Всё это работает за логарифм времени!

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

Построение: берём массив и строим по нему дерево, каждая вершина отвечает за минимум на своём участке.

Запрос: спускаясь по дереву, можно найти минимум на любом отрезке за O(log n).

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


Дерево отрезков моментально реагирует на изменения, не пересчитывая весь массив.

📣 C++ Ready | #алгоритмы
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥159👍4🤝3