Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Класс concurrent_priority_queue — это контейнер, который позволяет нескольким потокам параллельно помещать и извлекать элементы. Элементы извлекаются в порядке приоритета, где приоритет определяется функтором, предоставленным в качестве аргумента шаблона.
Синтаксис
template <typename T,
typename _Compare = std::less<T>,
typename _Ax = std::allocator<T>>
class concurrent_priority_queue;
Параметры
T
Тип данных элементов, хранимых в очереди с приоритетом.
_Сравнивать
Тип объекта функции, который может сравнивать значения двух элементов в качестве ключей сортировки для определения их относительного порядка в очереди с приоритетом. Этот аргумент является необязательным, и в качестве значения по умолчанию используется бинарный предикат less<T>.
_Ax
Тип, представляющий хранимый объект распределителя, инкапсулирующий сведения о распределении и освобождении памяти для параллельной очереди с приоритетом. Этот аргумент является необязательным, и значением по умолчанию является allocator<T>.
Участники
Общедоступные typedefы
| Имя | Описание |
|---|---|
allocator_type |
Тип, представляющий класс распределителя для параллельной очереди с приоритетом. |
const_reference |
Тип, представляющий константную ссылку на элемент типа, хранящийся в параллельной очереди с приоритетом. |
reference |
Тип, представляющий ссылку на элемент типа, хранящийся в параллельной очереди с приоритетом. |
size_type |
Тип, который подсчитывает число элементов в параллельной очереди с приоритетом. |
value_type |
Тип, описывающий тип данных, хранящихся в параллельной очереди с приоритетом. |
Открытые конструкторы
| Имя | Описание |
|---|---|
| параллельная_приоритетная_очередь | Перегружен. Создает параллельную очередь с приоритетом. |
Открытые методы
| Имя | Описание |
|---|---|
| очистить | Удаляет все элементы в параллельной очереди с приоритетом. Этот метод не является безопасным для параллелизма. |
| пустой | Проверяет, пуста ли параллельная очередь с приоритетом в момент, когда этот метод вызывается. Этот метод является безопасным для параллелизма. |
| get_allocator | Возвращает копию распределителя, используемого для создания приоритетной параллельной очереди. Этот метод является безопасным для параллелизма. |
| push | Перегружен. Добавляет элемент в параллельную очередь с приоритетом. Этот метод является безопасным для параллелизма. |
| размер | Возвращает число элементов в параллельной очереди с приоритетом. Этот метод является безопасным для параллелизма. |
| обменивать | Меняет местами содержимое двух параллельных очередей с приоритетом. Этот метод не является безопасным для параллелизма. |
| try_pop | Удаляет и возвращает элемент наивысшего приоритета из очереди, если очередь не пуста. Этот метод является безопасным для параллелизма. |
Открытые операторы
| Имя | Описание |
|---|---|
| оператор = | Перегружен. Назначает содержимое другого concurrent_priority_queue объекта этому объекту. Этот метод не является безопасным для параллелизма. |
Замечания
Подробные сведения о классе см. в разделе "Параллельные concurrent_priority_queue контейнеры и объекты".
Иерархия наследования
concurrent_priority_queue
Требования
Заголовок: concurrent_priority_queue.h
Пространство имен: конкурентность
очистить
Удаляет все элементы в параллельной очереди с приоритетом. Этот метод не является безопасным для параллелизма.
void clear();
Замечания
clear не является безопасным для параллелизма. Вы должны убедиться, что никакие другие потоки не вызывают методы на конкурентной очереди приоритетов, когда вы вызываете этот метод.
clear не освобождает память.
concurrent_priority_queue
Создает параллельную очередь с приоритетом.
explicit concurrent_priority_queue(
const allocator_type& _Al = allocator_type());
explicit concurrent_priority_queue(
size_type _Init_capacity,
const allocator_type& _Al = allocator_type());
template<typename _InputIterator>
concurrent_priority_queue(_InputIterator _Begin,
_InputIterator _End,
const allocator_type& _Al = allocator_type());
concurrent_priority_queue(
const concurrent_priority_queue& _Src);
concurrent_priority_queue(
const concurrent_priority_queue& _Src,
const allocator_type& _Al);
concurrent_priority_queue(
concurrent_priority_queue&& _Src);
concurrent_priority_queue(
concurrent_priority_queue&& _Src,
const allocator_type& _Al);
Параметры
_InputIterator
Тип итератора ввода.
_Аль
Класс распределителя для использования с данным объектом.
_Init_capacity
Начальная производительность объекта concurrent_priority_queue.
_Начинать
Положение первого элемента в диапазоне копируемых элементов.
_Конец
Позиция первого элемента за пределами диапазона копируемых элементов.
_Src
Исходный объект concurrent_priority_queue для копирования или перемещения элементов.
Замечания
Все конструкторы хранят объект _Al распределителя и инициализируют очередь приоритетов.
Первый конструктор задает пустую очередь начального приоритета и при необходимости задает распределитель.
Второй конструктор задает очередь приоритета с начальной емкостью _Init_capacity и при необходимости задает распределитель.
Третий конструктор задает значения, предоставленные диапазоном итератора [ _Begin, _End) и при необходимости задает распределитель.
Четвёртый и пятый конструкторы указывают копию приоритетной очереди _Src.
Шестой и седьмой конструкторы указывают на перемещение приоритетной очереди _Src.
пусто
Проверяет, пуста ли параллельная очередь с приоритетом в момент, когда этот метод вызывается. Этот метод является безопасным для параллелизма.
bool empty() const;
Возвращаемое значение
true Значение , если очередь приоритета была пуста на момент вызова функции, false в противном случае.
get_allocator
Возвращает копию распределителя, используемого для создания приоритетной параллельной очереди. Этот метод является безопасным для параллелизма.
allocator_type get_allocator() const;
Возвращаемое значение
Копия распределителя, используемая для создания объекта concurrent_priority_queue.
operator=
Назначает содержимое другого concurrent_priority_queue объекта этому объекту. Этот метод не является безопасным для параллелизма.
concurrent_priority_queue& operator= (const concurrent_priority_queue& _Src);
concurrent_priority_queue& operator= (concurrent_priority_queue&& _Src);
Параметры
_Src
Исходный объект concurrent_priority_queue.
Возвращаемое значение
Ссылка на этот concurrent_priority_queue объект.
отправка
Добавляет элемент в параллельную очередь с приоритетом. Этот метод является безопасным для параллелизма.
void push(const value_type& _Elem);
void push(value_type&& _Elem);
Параметры
_Elem
Элемент, добавляемый в параллельную очередь приоритета.
размер
Возвращает число элементов в параллельной очереди с приоритетом. Этот метод является безопасным для параллелизма.
size_type size() const;
Возвращаемое значение
Количество элементов в этом concurrent_priority_queue объекте.
Замечания
Возвращаемый размер гарантированно включает все элементы, добавленные вызовами функции push. Однако он может не отражать результаты ожидающих параллельных операций.
замена
Меняет местами содержимое двух параллельных очередей с приоритетом. Этот метод не является безопасным для параллелизма.
void swap(concurrent_priority_queue& _Queue);
Параметры
_Очередь
Объект concurrent_priority_queue для замены содержимого.
try_pop
Удаляет и возвращает элемент наивысшего приоритета из очереди, если очередь не пуста. Этот метод является безопасным для параллелизма.
bool try_pop(reference _Elem);
Параметры
_Elem
Ссылка на переменную, которая будет заполнена элементом с наивысшим приоритетом, если очередь не пуста.
Возвращаемое значение
true Значение, если значение было извлечено, false в противном случае.
См. также
Пространство имен параллелизм
Параллельные контейнеры и объекты