Стандартная библиотека шаблонов C++: контейнеры, итераторы, алгоритмы и функциональные объекты. Разборы с примерами показывают не только «как вызвать», но и как контейнеры устроены внутри, чем отличаются и что выбрать под задачу.
Move-семантика и std::move на практике в C++-коде
Введение До C++11 копирование было единственным способом передать объект «по значению»: если функция возвращала std::vector<int> из миллиона элементов, компилятор (в лучшем случае с помощью оптимизаций) копировал весь буфер.…
std::unordered_map vs QMap/QHash: производительность и когда что выбрать
Введение В Qt-проектах разработчик часто стоит перед выбором: использовать стандартный std::unordered_map из STL или Qt-контейнеры QMap/QHash. На первый взгляд они решают одну и ту же задачу — отображение…
Алгоритмы STL , которые недооценивают новички (transform, accumulate, partition)
Введение Многие разработчики, начав работу с STL, ограничиваются std::sort и std::find, а остальную логику пишут руками в виде циклов for. Между тем заголовок <algorithm> (и смежный <numeric>) содержит…
std::variant и std::visit: типобезопасные альтернативы union
Введение Классический union в C++ позволяет хранить в одной области памяти значения разных типов, но он совершенно не типобезопасен: компилятор не следит за тем, какой тип «активен» в…
std::optional в C++: где использовать вместо проверок на nullptr
Введение Долгое время C++-разработчики выражали «значение может отсутствовать» через указатели и nullptr, через специальные «магические» значения (-1, 0, пустая строка) или через пару «значение + флаг успешности». Все…
Многопоточность в C++: std::thread, std::async, std::mutex
Современные процессоры имеют несколько ядер, что позволяет выполнять несколько задач одновременно. Чтобы эффективно использовать вычислительные ресурсы, C++ предоставляет инструменты многопоточности через стандартную библиотеку <thread>, <future> и <mutex>. В…
Как использовать std::optional, std::variant и std::any в C++
овременный C++ предлагает мощные инструменты для работы с неопределенными значениями и переменными, способными хранить данные разных типов. В этой статье мы рассмотрим три ключевых компонента стандартной библиотеки: std::optional,…
std::pmr::memory_resource: гибкое управление памятью в C++17
Стандарт C++17 представил новый механизм управления памятью через пространство имен std::pmr (Polymorphic Memory Resources). Центральным элементом этой системы является абстрактный базовый класс std::pmr::memory_resource, который предоставляет полиморфный интерфейс для выделения и освобождения…