STL 24

STL — стандартную библиотеку шаблонов C++

STL

Структуры данных STL изнутри: vector, list, deque — когда что выбрать

Введение Основной цикл статей уже использовал std::vector/QVector без подробного разбора внутреннего устройства — в этой статье разберём, как реализованы основные линейные контейнеры STL изнутри, и какая внутренняя структура…

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> из миллиона элементов, компилятор (в лучшем случае с помощью оптимизаций) копировал весь буфер.…