Позволяет мгновенно обновлять элементы и считать сумму на любом префиксе за логарифм времени.
Что важно знать:
• Хранит частичные куски;
• Обновляет несколько позиций;
• Быстро считает префиксы.
Дерево Фенвика удобно, просто реализуется и эффективно решает задачи с частыми обновлениями и запросами.
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
  Создаём метрические литералы за 1 минуту!
Иногда хочется писать
Используем их так же легко, как числа:
🔥 Код становится самодокументируемым, а арифметика — безопасной и constexpr-чистой.
📣  C++ Ready | #практика
Иногда хочется писать
5_km + 300_m без «магических» коэффициентов. Пользовательские литералы делают это читаемо и проверяемо на этапе компиляции:struct Meter {
    double value;                      
    // всегда в метрах
    constexpr explicit operator double() const { return value; }
};
constexpr Meter operator"" _m (long double v)  { return Meter{static_cast<double>(v)}; }
constexpr Meter operator"" _km(long double v)  { return Meter{static_cast<double>(v * 1000)}; }Используем их так же легко, как числа:
constexpr Meter d = 5.0_km + 300.0_m; // 5300 м на этапе компиляции
static_assert(static_cast<double>(d) == 5300.0);
std::cout << d.value << " m\n"; // вывод: 5300
🔥 Код становится самодокументируемым, а арифметика — безопасной и constexpr-чистой.
Please open Telegram to view this post
    VIEW IN TELEGRAM
  🔥15❤6👍5👎2
  Please open Telegram to view this post
    VIEW IN TELEGRAM
  Please open Telegram to view this post
    VIEW IN TELEGRAM
  🔥26👍6❤3
  👍6❤4🔥3
  Он сравнивает сразу все поля и сам генерирует нужные операторы сравнения.
Что важно знать:
• Автоматически создаёт сравнения;
• Поддерживает особые случаи;
• Работает в STL без кода.
<=> упрощает сравнение объектов и отлично работает с современными стандартами и алгоритмами STL.Please open Telegram to view this post
    VIEW IN TELEGRAM
  Please open Telegram to view this post
    VIEW IN TELEGRAM
  🔥29👍6❤4🤝1
  This media is not supported in your browser
    VIEW IN TELEGRAM
  На сайте доступно множество уроков и статей — от основ C, алгоритмов, структур данных, до веб-технологий и SQL. Всё структурировано: уровни, задания, поддержка. Даже абсолютный новичок может стартовать и постепенно прокачиваться.
Please open Telegram to view this post
    VIEW IN TELEGRAM
  👍15❤6🔥5