Автор: <span>admin</span>

Мультимедиа

Обработка аудиосигнала: эффекты, эквализация, визуализация спектра

Введение Статья 470 показала доступ к «сырым» PCM-данным захваченного звука — в этой статье применим эти данные для практической обработки сигнала: простой эффект усиления/затухания, базовая эквализация через цифровую…

Мультимедиа

Запись видео с камеры: QCamera, QMediaCaptureSession

Введение Статья 470 разобрала захват аудио — для видео с камеры используется другой, хотя концептуально похожий набор классов, организованный вокруг QMediaCaptureSession — центрального координатора, объединяющего источники захвата (камеру,…

STL

Кастомные аллокаторы в STL-контейнерах: зачем и как написать свой

Введение По умолчанию все контейнеры STL (std::vector, std::map, std::list и т.д.) используют std::allocator<T>, который обращается к глобальным operator new/operator delete. В большинстве приложений этого достаточно. Но в высокопроизводительных…

STL

std::ranges в C++20: декларативная обработка коллекций

Введение Классический стиль работы с алгоритмами STL — std::sort(v.begin(), v.end()) — требует постоянно передавать пары итераторов, что многословно и подвержено ошибкам (легко перепутать диапазоны двух разных контейнеров). C++20…

STL

Контейнеры STL и их сложность операций: шпаргалка для собеседований и практики

Введение Выбор правильного контейнера — это решение, которое влияет на производительность кода сильнее, чем большинство микрооптимизаций. На собеседованиях регулярно спрашивают о сложности операций у vector, list, map, unordered_map…

STL

std::function и лямбды как параметры: гибкие интерфейсы без шаблонов

Введение Шаблоны (templates) — мощный инструмент для написания обобщённого кода, но не всегда подходящий: они требуют, чтобы реализация была видна в заголовочном файле, увеливают время компиляции и размер…

STL

Move-семантика и std::move на практике в C++-коде

Введение До C++11 копирование было единственным способом передать объект «по значению»: если функция возвращала std::vector<int> из миллиона элементов, компилятор (в лучшем случае с помощью оптимизаций) копировал весь буфер.…