Стандартная библиотека шаблонов C++: контейнеры, итераторы, алгоритмы и функциональные объекты. Разборы с примерами показывают не только «как вызвать», но и как контейнеры устроены внутри, чем отличаются и что выбрать под задачу.
Структуры данных STL изнутри: vector, list, deque — когда что выбрать
Введение Основной цикл статей уже использовал std::vector/QVector без подробного разбора внутреннего устройства — в этой статье разберём, как реализованы основные линейные контейнеры STL изнутри, и какая внутренняя структура…
std::chrono: работа с временем, длительностями и таймзонами в современном C++
Введение До C++11 работа с временем в стандартной библиотеке ограничивалась C-API (time_t, struct tm, difftime) — без типобезопасности единиц измерения и с неудобной работой с датами. std::chrono ввела…
Кастомные аллокаторы в STL-контейнерах: зачем и как написать свой
Введение По умолчанию все контейнеры STL (std::vector, std::map, std::list и т.д.) используют std::allocator<T>, который обращается к глобальным operator new/operator delete. В большинстве приложений этого достаточно. Но в высокопроизводительных…
Кастомные компараторы и predicate-функции в алгоритмах STL
Введение Алгоритмы STL — sort, find_if, unique, lower_bound, контейнеры map/set — по умолчанию используют operator< или operator== для сравнения элементов. Но реальные задачи часто требуют сортировки по нестандартному…
std::ranges в C++20: декларативная обработка коллекций
Введение Классический стиль работы с алгоритмами STL — std::sort(v.begin(), v.end()) — требует постоянно передавать пары итераторов, что многословно и подвержено ошибкам (легко перепутать диапазоны двух разных контейнеров). C++20…
Контейнеры STL и их сложность операций: шпаргалка для собеседований и практики
Введение Выбор правильного контейнера — это решение, которое влияет на производительность кода сильнее, чем большинство микрооптимизаций. На собеседованиях регулярно спрашивают о сложности операций у vector, list, map, unordered_map…
std::span: безопасная работа с массивами без копирования в C++20
Введение Передача «массива и его размера» в функцию — одна из самых старых и самых проблемных идиом C++: void process(int* data, size_t size). Она не несёт информации о…
std::function и лямбды как параметры: гибкие интерфейсы без шаблонов
Введение Шаблоны (templates) — мощный инструмент для написания обобщённого кода, но не всегда подходящий: они требуют, чтобы реализация была видна в заголовочном файле, увеливают время компиляции и размер…