Консольная утилита, которая с помощью
Boost.Progress
визуально отображает обратный отсчёт заданного числа секунд.Важно помнить:
• Прогресс-бар наглядно отражает состояние выполнения заданного таймера.
• Гибкое перенаправление вывода позволяет интегрировать бар куда угодно.
• Принцип работы легко адаптируется к любым другим задачам консоли.
Это позволяет просто и наглядно адаптировать визуализацию прогресса под другие консольные задачи.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥20❤8👍5🤝1
В этой статье:
• Пошаговая настройка среды и сохранение картинки в формате PPM
• Отрисовка карты уровня в виде сетки из прямоугольников
• Добавление игрока на карту с простыми координатами
🔊 Продолжай читать на Habr!
Please open Telegram to view this post
VIEW IN TELEGRAM
❤14👍5🔥4
Позволяет работать с фрагментами текста очень быстро: брать и обрабатывать куски строки, пропускать уже обработанные символы, искать разделители и безопасно передавать указатель с длиной в C-функции — всё это без лишних выделений памяти.
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🖤
Please open Telegram to view this post
VIEW IN TELEGRAM
❤11👍5🔥3
Пользовательские аллокаторы в STL: управляем памятью сами!
Иногда нужно больше контроля над тем, как выделяется память — например, логировать аллокации или использовать собственный буфер.
Для этого в C++ можно использовать пользовательские аллокаторы — и подставлять их в стандартные контейнеры, такие как
Сначала создадим минимальный аллокатор с логированием:
Здесь
Теперь можем использовать аллокатор с
🔥 Это позволяет наглядно контролировать выделение памяти, а также легко внедрять собственные стратегии аллокации.
📣 C++ Ready | #практика
Иногда нужно больше контроля над тем, как выделяется память — например, логировать аллокации или использовать собственный буфер.
Для этого в 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);
🔥 Это позволяет наглядно контролировать выделение памяти, а также легко внедрять собственные стратегии аллокации.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15❤6🔥5
👍14❤6🔥4
Позволяет представлять и передавать срезы элементов (обёртка над массивом/вектором/указателем+размером) без лишних копий.
Что важно знать:
• Не владеет данными — он хранит лишь указатель и длину; контейнер должен жить дольше span, иначе — UB.
• Синтаксис: std::span<T> (динамическая длина) и std::span<T, N> (фиксированная длина).
• Конструкторы принимают std::array, std::vector, C-массив или pointer+size
Удобно для передачи срезов без копирования, главное — не допускать dangling и отдавать span<const T> для чтения.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥18👍7❤5