Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥12👍7❤6👎3
❤5👍4🔥3
Сегодня покажу, как получать байты, задавать фиксированные размеры и передавать диапазоны в алгоритмы без лишних усилий.
Что важно знать:
• Байтный вид быстро;
• Фиксированная длина экономит;
• Легко сортировать напрямую.
Это продолжение прошлого гайда
— теперь
span раскроется на полную силу.Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥11👍6❤4
Асинхронное чтение файлов с std::async!
Иногда нужно загрузить сразу несколько больших файлов без блокировки основного потока — например, при подготовке ресурсов для приложения или анализа логов.
С
Вызовем чтение сразу двух файлов параллельно и дождёмся результата:
🔥 Таким образом вы распараллеливаете I/O-операции без явных потоков или сложных библиотек. Как только оба
📣 C++ Ready | #практика
Иногда нужно загрузить сразу несколько больших файлов без блокировки основного потока — например, при подготовке ресурсов для приложения или анализа логов.
С
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() вернёт содержимое файлов.Please open Telegram to view this post
VIEW IN TELEGRAM
👍12❤5🔥3
Позволяет мгновенно обновлять элементы и считать сумму на любом префиксе за логарифм времени.
Что важно знать:
• Хранит частичные куски;
• Обновляет несколько позиций;
• Быстро считает префиксы.
Дерево Фенвика удобно, просто реализуется и эффективно решает задачи с частыми обновлениями и запросами.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥13❤4👍4
Умные указатели и static_pointer_cast: безопасный кастинг!
Когда у вас есть
Здесь
Теперь выполним кастинг и вызовем методы производного класса:
🔥 Это позволяет безопасно преобразовать
📣 C++ Ready | #практика
Когда у вас есть
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.Please open Telegram to view this post
VIEW IN TELEGRAM
❤7👍5🔥4👎1
Утилита пригодится, если нужно быстро извлечь текст из скриншота, фото или PDF-страницы.
Что важно знать:
• Работает с картинками;
• Поддерживает русский язык;
• Запускается через терминал.
Простой инструмент для автоматизации, распознавания чеков, объявлений или конспектов без лишней нагрузки.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16❤7🔥3👎1