Compartir a través de


concurrent_priority_queue (Clase)

La clase concurrent_priority_queue es un contenedor que permite que varios subprocesos inserten y extraigan elementos de forma simultánea. Los elementos se extraen en orden de prioridad donde la prioridad viene determinada por un functor proporcionado como un argumento de plantilla.

Sintaxis

template <typename T,
    typename _Compare= std::less<T>,
    typename _Ax = std::allocator<T>
>,
    typename _Ax = std::allocator<T>> class concurrent_priority_queue;

Parámetros

T
Tipo de datos que se van a almacenar en la cola de prioridad simultánea.

_Compare
El tipo del objeto de función que puede comparar dos valores de elementos como claves de ordenación para determinar su orden relativo en la cola de prioridad simultánea. Este argumento es opcional y el predicado binario less<T> es el valor predeterminado.

_Ax
El tipo que representa el objeto de asignador almacenado que encapsula los detalles acerca de la asignación y desasignación de memoria para la cola de prioridad simultánea. Este argumento es opcional y el valor predeterminado es allocator<T>.

Miembros

Definiciones de tipos públicas

Nombre Descripción
allocator_type Tipo que representa la clase de asignador para la cola de prioridad simultánea.
const_reference Tipo que representa una referencia const a un elemento del tipo almacenado en una cola de prioridad simultánea.
reference Tipo que representa una referencia a un elemento del tipo almacenado en una cola de prioridad simultánea.
size_type Tipo que cuenta el número de elementos de una cola de prioridad simultánea.
value_type Tipo que representa el tipo de datos almacenado en una cola de prioridad simultánea.

Constructores públicos

Nombre Descripción
concurrent_priority_queue Con sobrecarga. Construye una cola de prioridad simultánea.

Métodos públicos

Nombre Descripción
eliminar Borra todos los elementos de la prioridad simultánea. Este método no es seguro para la simultaneidad.
empty Comprueba si la cola de prioridad simultánea está vacía en el momento en que se llama a este método. Este método es seguro para simultaneidad.
get_allocator Devuelve una copia del asignador utilizado para construir la cola de prioridad simultánea. Este método es seguro para simultaneidad.
push Con sobrecarga. Agrega un elemento a la cola de prioridad simultánea. Este método es seguro para simultaneidad.
size Devuelve el número de elementos de la cola de prioridad simultánea. Este método es seguro para simultaneidad.
swap Intercambia el contenido de dos colas de prioridad simultáneas. Este método no es seguro para la simultaneidad.
try_pop Quita y devuelve el elemento de prioridad más alta de la cola si la cola no está vacía. Este método es seguro para simultaneidad.

Operadores públicos

Nombre Descripción
operator= Con sobrecarga. Asigna el contenido de otro objeto concurrent_priority_queue a este. Este método no es seguro para la simultaneidad.

Comentarios

Para obtener más información acerca de la clase concurrent_priority_queue, consulte Contenedores y objetos paralelos.

Jerarquía de herencia

concurrent_priority_queue

Requisitos

Encabezado: concurrent_priority_queue.h

Espacio de nombres: simultaneidad

eliminar

Borra todos los elementos de la prioridad simultánea. Este método no es seguro para la simultaneidad.

void clear();

Comentarios

clear no es seguro de simultaneidad. Debe asegurarse de que ningún otro subproceso invoca métodos en la cola de prioridad simultánea al llamar a este método. clear no libera memoria.

concurrent_priority_queue

Construye una cola de prioridad simultánea.

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);

Parámetros

_InputIterator
El tipo de iterador de entrada.

_Al
La clase de asignador que se usa con este objeto.

_Init_capacity
Capacidad inicial del objeto concurrent_priority_queue.

_Begin
Posición del primer elemento en el intervalo de elementos que se va a copiar.

_End
Posición del primer elemento más allá del intervalo de elementos que se va a copiar.

_Src
El objeto de origen concurrent_priority_queue del que copiar o mover elementos.

Comentarios

Todos los constructores almacenan un objeto de asignador _Al e inicializan la cola de prioridad.

El primer constructor especifica una cola de prioridad inicial vacía y, opcionalmente, especifica un asignador.

El segundo constructor especifica una cola de prioridad con una capacidad inicial _Init_capacity y, opcionalmente, especifica un asignador.

El tercer constructor especifica los valores proporcionados por el intervalo de iteradores [ _Begin, _End) y, opcionalmente, especifica un asignador.

Los constructores cuarto y quinto especifican una copia de la cola de prioridad _Src.

Los constructores sexto y séptimo especifican un movimiento de la cola de prioridad _Src.

empty

Comprueba si la cola de prioridad simultánea está vacía en el momento en que se llama a este método. Este método es seguro para simultaneidad.

bool empty() const;

Valor devuelto

true si la cola de prioridad estaba vacía en el momento en que se llamó a la función, false lo contrario.

get_allocator

Devuelve una copia del asignador utilizado para construir la cola de prioridad simultánea. Este método es seguro para simultaneidad.

allocator_type get_allocator() const;

Valor devuelto

Devuelve una copia del asignador usado para construir el objeto concurrent_priority_queue.

operator=

Asigna el contenido de otro objeto concurrent_priority_queue a este. Este método no es seguro para la simultaneidad.

concurrent_priority_queue& operator= (const concurrent_priority_queue& _Src);

concurrent_priority_queue& operator= (concurrent_priority_queue&& _Src);

Parámetros

_Src
Objeto concurrent_priority_queue de origen.

Valor devuelto

La referencia a este objeto concurrent_priority_queue.

push

Agrega un elemento a la cola de prioridad simultánea. Este método es seguro para simultaneidad.

void push(const value_type& _Elem);

void push(value_type&& _Elem);

Parámetros

_Elem
Elemento que se va a agregar a la cola de prioridad simultánea.

size

Devuelve el número de elementos de la cola de prioridad simultánea. Este método es seguro para simultaneidad.

size_type size() const;

Valor devuelto

Número de elementos en este objeto concurrent_priority_queue.

Comentarios

Se garantiza que el tamaño devuelto incluye todos los elementos agregados mediante llamadas a la función push. Sin embargo, es posible que no refleje los resultados de las operaciones simultáneas pendientes.

swap

Intercambia el contenido de dos colas de prioridad simultáneas. Este método no es seguro para la simultaneidad.

void swap(concurrent_priority_queue& _Queue);

Parámetros

_Queue
Objeto concurrent_priority_queue con el que se va a intercambiar contenido.

try_pop

Quita y devuelve el elemento de prioridad más alta de la cola si la cola no está vacía. Este método es seguro para simultaneidad.

bool try_pop(reference _Elem);

Parámetros

_Elem
Referencia a una variable que se rellenará con el elemento de prioridad más alta, si la cola no está vacía.

Valor devuelto

true si se ha extraído un valor; de lo contrario, es false.

Consulte también

concurrency (espacio de nombres)
Contenedores y objetos paralelos