Архив рубрики: STL

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

Многопоточность в C++: std::thread, std::async, std::mutex

Современные процессоры имеют несколько ядер, что позволяет выполнять несколько задач одновременно. Чтобы эффективно использовать вычислительные ресурсы, C++ предоставляет инструменты многопоточности через стандартную библиотеку <thread>, <future> и <mutex>. В этой статье мы рассмотрим ключевые элементы многопоточности в C++: std::thread, std::async и std::mutex. Что такое многопоточность? Многопоточность — это способность программы выполнять несколько потоков выполнения одновременно. Каждый… Читать далее »

Как использовать std::optional, std::variant и std::any в C++

овременный C++ предлагает мощные инструменты для работы с неопределенными значениями и переменными, способными хранить данные разных типов. В этой статье мы рассмотрим три ключевых компонента стандартной библиотеки: std::optional, std::variant и std::any. Они пришли в C++17 и кардинально упростили работу с переменными, чье состояние или тип могут меняться во время выполнения программы. 1. std::optional: значение или… Читать далее »

std::pmr::memory_resource: гибкое управление памятью в C++17

Стандарт C++17 представил новый механизм управления памятью через пространство имен std::pmr (Polymorphic Memory Resources). Центральным элементом этой системы является абстрактный базовый класс std::pmr::memory_resource, который предоставляет полиморфный интерфейс для выделения и освобождения памяти. Этот механизм позволяет: Базовый интерфейс memory_resource Стандартные реализации memory_resource C++17 предоставляет несколько готовых реализаций memory_resource: new_delete_resource Использует глобальные операторы new и delete (аналог std::allocator). null_memory_resource Генерирует исключение std::bad_alloc при любой попытке выделения… Читать далее »

Аллокаторы памяти: std::allocator, pool allocator

Аллокаторы памяти в C++ — это механизмы управления выделением и освобождением памяти для контейнеров стандартной библиотеки. Они абстрагируют процесс работы с памятью, позволяя разработчикам контролировать стратегии распределения памяти без изменения кода контейнеров. Стандартные контейнеры C++ (vector, list, map и др.) по умолчанию используют std::allocator, но могут работать с любым аллокатором, удовлетворяющим определенным требованиям. std::allocator — стандартный… Читать далее »

Сравнение std::array и QVector: какой контейнер выбрать?

В C++ и Qt есть множество контейнеров для хранения данных. Два часто используемых варианта — это std::array из STL и QVector из Qt. Оба обеспечивают удобный доступ к элементам и поддержку итераторов, но их философия и предназначение различаются. В этой статье мы разберем различия, преимущества и сценарии использования std::array и QVector. Краткое описание std::array QVector… Читать далее »

std::array в C++: статический массив с возможностями STL

В языке C++ массивы бывают двух основных типов: обычные C-массивы и более безопасные, оборачивающие их структуры — например, std::array. В этой статье мы рассмотрим, что такое std::array, чем он отличается от std::vector и C-массивов, как его правильно использовать и когда стоит предпочесть именно его. std::array — это контейнер фиксированного размера, который находится в заголовочном файле… Читать далее »

Примеры сортировки QList с использованием std::sort в Qt

Современный подход к сортировке в Qt-проектах заключается в использовании стандартного алгоритма std::sort из STL. Он отлично работает с контейнерами Qt, такими как QList и QVector, при условии, что они поддерживают RandomAccessIterator. В этой статье приведены примеры сортировки строк (QList<QString>) и пользовательских структур. Сортировка QList<QString> по алфавиту По умолчанию std::sort использует оператор <, который уже определён… Читать далее »

std::sort vs qSort: что выбрать для сортировки в C++/Qt?

При разработке на C++ с использованием фреймворка Qt, программист может столкнуться с выбором между использованием стандартного алгоритма std::sort и устаревшей функции qSort из Qt. В этой статье мы разберем, в чем разница между ними, какие преимущества и недостатки у каждого, и какой вариант стоит использовать в современных проектах. Краткое описание std::sort qSort Сравнение по критериям… Читать далее »

Использование std::sort в C++

Одной из важнейших задач в программировании является сортировка данных. В стандартной библиотеке C++ (STL) для этого предназначен алгоритм std::sort, находящийся в заголовочном файле <algorithm>. Это универсальный, высокоэффективный инструмент, который подходит для большинства задач сортировки в современных C++ проектах. Общий синтаксис begin и end — итераторы начала и конца диапазона (например, v.begin() и v.end()). compare_function —… Читать далее »

Руководство по std::vector в C++

std::vector — один из наиболее часто используемых контейнеров в стандартной библиотеке C++ (STL). Это динамический массив, который автоматически управляет памятью: при необходимости расширяется, а при удалении элементов — освобождает ресурсы. 1. Что такое std::vector? std::vector — шаблонный класс, реализующий массив с динамическим размером. В отличие от обычного массива, vector может изменять свою длину во время… Читать далее »