STL: стандартная библиотека шаблонов C++

Стандартная библиотека шаблонов 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) — мощный инструмент для написания обобщённого кода, но не всегда подходящий: они требуют, чтобы реализация была видна в заголовочном файле, увеливают время компиляции и размер…