Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
La clase concurrent_vector es una clase de contenedor de secuencia que permite el acceso aleatorio a cualquier elemento. Habilita operaciones de anexión segura concurrente, acceso a elementos, acceso a iteradores y recorrido de iteradores. Aquí, seguro para la concurrencia significa que los punteros e iteradores siempre son válidos. No es una garantía de inicialización de elementos ni de un orden de recorrido determinado.
Sintaxis
template<typename T, class _Ax>
class concurrent_vector: protected details::_Allocator_base<T,
_Ax>,
private details::_Concurrent_vector_base_v4;
Parámetros
T
Tipo de dato de los elementos que se van a almacenar en el vector.
_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 el vector simultáneo. 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 asignadora para el vector concurrente. |
const_iterator |
Tipo que proporciona un iterador de acceso aleatorio que puede leer un elemento const en un vector concurrente. |
const_pointer |
Tipo que proporciona un puntero a un elemento const en un vector concurrente. |
const_reference |
Tipo que proporciona una referencia a un elemento const almacenado en un vector concurrente para la lectura y realización de operaciones const. |
const_reverse_iterator |
Tipo que proporciona un iterador de acceso aleatorio que puede leer cualquier elemento const en el vector concurrente. |
difference_type |
Tipo que proporciona la distancia firmada entre dos elementos en un vector simultáneo. |
iterator |
Tipo que proporciona un iterador de acceso aleatorio que puede leer cualquier elemento en un vector simultáneo. La modificación de un elemento mediante el iterador no es seguro para la simultaneidad. |
pointer |
Tipo que proporciona un puntero a un elemento en un vector concurrente. |
reference |
Tipo que proporciona una referencia a un elemento almacenado en un vector concurrente. |
reverse_iterator |
Tipo que proporciona un iterador de acceso aleatorio que puede leer cualquier elemento en un vector concurrente invertido. La modificación de un elemento mediante el iterador no es seguro para la simultaneidad. |
size_type |
Tipo que cuenta el número de elementos en un vector simultáneo. |
value_type |
Tipo que representa el tipo de datos almacenado en un vector simultáneo. |
Constructores públicos
| Nombre | Descripción |
|---|---|
| concurrent_vector | Sobrecargado Construye un vector simultáneo. |
| ~concurrent_vector Destructor | Borra todos los elementos y destruye este vector simultáneo. |
Métodos públicos
| Nombre | Descripción |
|---|---|
| asignar | Sobrecargado Borra los elementos del vector simultáneo y le asigna _N copias de _Item, o valores especificados por el intervalo de iterador [ _Begin, _End). Este método no es seguro para la simultaneidad. |
| en | Sobrecargado Proporciona acceso al elemento en el índice especificado en el vector simultáneo. Este método es seguro para la concurrencia en las operaciones de lectura y mientras se incrementa el vector, siempre que haya asegurado que el valor _Index es menor que el tamaño del vector concurrente. |
| Atrás | Sobrecargado Devuelve una referencia o una const referencia al último elemento del vector simultáneo. Si el vector concurrente está vacío, el valor devuelto no está definido. Este método es seguro para simultaneidad. |
| empezar | Sobrecargado Devuelve un iterador de tipo iterator o const_iterator al principio del vector simultáneo. Este método es seguro para simultaneidad. |
| capacidad | Devuelve el tamaño máximo al que puede crecer el vector simultáneo sin tener que asignar más memoria. Este método es seguro para simultaneidad. |
| cbegin | Devuelve un iterador de tipo const_iterator al principio del vector simultáneo. Este método es seguro para simultaneidad. |
| cend | Devuelve un iterador de tipo const_iterator al principio del vector simultáneo. Este método es seguro para simultaneidad. |
| eliminar | Borra todos los elementos del vector simultáneo. Este método no es seguro para la simultaneidad. |
| crbegin | Devuelve un iterador de tipo const_reverse_iterator al principio del vector simultáneo. Este método es seguro para simultaneidad. |
| crend | Devuelve un iterador de tipo const_reverse_iterator al principio del vector simultáneo. Este método es seguro para simultaneidad. |
| vacío | Comprueba si el vector simultáneo está vacío en el momento en que se llama a este método. Este método es seguro para simultaneidad. |
| fin | Sobrecargado Devuelve un iterador de tipo iterator o const_iterator al principio del vector simultáneo. Este método es seguro para simultaneidad. |
| frente | Sobrecargado Devuelve una referencia o una const referencia al último elemento del vector simultáneo. Si el vector concurrente está vacío, el valor devuelto no está definido. Este método es seguro para simultaneidad. |
| get_allocator | Devuelve una copia del asignador utilizado para construir el vector concurrente. Este método es seguro para simultaneidad. |
| grow_by | Sobrecargado Aumenta este vector simultáneo por _Delta elementos. Este método es seguro para simultaneidad. |
| crecer_a_un_mínimo_de | Crece este vector simultáneo hasta que tiene al menos _N elementos. Este método es seguro para simultaneidad. |
| max_size | Devuelve el número máximo de elementos que puede contener el vector simultáneo. Este método es seguro para simultaneidad. |
| push_back | Sobrecargado Anexa el elemento especificado al final del vector simultáneo. Este método es seguro para simultaneidad. |
| rbegin | Sobrecargado Devuelve un iterador de tipo reverse_iterator o const_reverse_iterator al principio del vector simultáneo. Este método es seguro para simultaneidad. |
| dividir | Sobrecargado Devuelve un iterador de tipo reverse_iterator o const_reverse_iterator al principio del vector simultáneo. Este método es seguro para simultaneidad. |
| reserva | Asigna suficiente espacio para aumentar el tamaño _N del vector simultáneo sin tener que asignar más memoria más adelante. Este método no es seguro para la simultaneidad. |
| redimensionar | Sobrecargado Cambia el tamaño del vector simultáneo al tamaño solicitado, eliminando o agregando elementos según sea necesario. Este método no es seguro para la simultaneidad. |
| reducir_para_ajustar | Compacta la representación interna del vector simultáneo para reducir la fragmentación y optimizar el uso de memoria. Este método no es seguro para la simultaneidad. |
| tamaño | Devuelve el número de elementos en el vector concurrente. Este método es seguro para simultaneidad. |
| swap | Intercambia el contenido de dos vectores concurrentes. Este método no es seguro para la simultaneidad. |
Operadores públicos
| Nombre | Descripción |
|---|---|
| operador [] | Sobrecargado Proporciona acceso al elemento en el índice especificado en el vector simultáneo. Este método es seguro para las operaciones de lectura en concurrencia, y también mientras se aumenta el vector, siempre y cuando haya asegurado que el valor _Index es menor que el tamaño del vector concurrente. |
| operator= | Sobrecargado Asigna el contenido de otro objeto concurrent_vector a este. Este método no es seguro para la simultaneidad. |
Comentarios
Para obtener más información acerca de la clase concurrent_vector, consulte Contenedores y objetos paralelos.
Jerarquía de herencia
_Concurrent_vector_base_v4
_Allocator_base
concurrent_vector
Requisitos
Encabezado: concurrent_vector.h
Espacio de nombres: simultaneidad
asignar
Borra los elementos del vector simultáneo y le asigna _N copias de _Item, o valores especificados por el intervalo de iterador [ _Begin, _End). Este método no es seguro para la simultaneidad.
void assign(
size_type _N,
const_reference _Item);
template<class _InputIterator>
void assign(_InputIterator _Begin,
_InputIterator _End);
Parámetros
_InputIterator
Tipo del iterador especificado.
_N
Número de elementos que se van a copiar en el vector simultáneo.
_Artículo
Referencia a un valor usado para rellenar el vector simultáneo.
_Empezar
Un iterador al primer elemento del rango de origen.
_Fin
Iterador al elemento siguiente al último del intervalo de origen.
Comentarios
assign no es seguro de simultaneidad. Debe asegurarse de que ningún otro subproceso invoca métodos en el vector simultáneo al llamar a este método.
en
Proporciona acceso al elemento en el índice especificado en el vector simultáneo. Este método es seguro para la concurrencia en las operaciones de lectura y mientras se incrementa el vector, siempre que haya asegurado que el valor _Index es menor que el tamaño del vector concurrente.
reference at(size_type _Index);
const_reference at(size_type _Index) const;
Parámetros
_Índice
Índice del elemento al que se hará referencia.
Valor devuelto
Referencia al elemento en el índice especificado.
Comentarios
La versión de la función at que devuelve una referencia que no es const no se puede usar para escribir concurrentemente en el elemento desde diferentes hilos. Se debe usar un objeto de sincronización diferente para sincronizar las operaciones simultáneas de lectura y escritura en el mismo elemento de datos.
El método produce out_of_range si _Index es mayor o igual que el tamaño del vector simultáneo y range_error si el índice es para una parte rota del vector. Para obtener más información sobre cómo se puede romper un vector, consulte Contenedores y objetos paralelos.
atrás
Devuelve una referencia o una const referencia al último elemento del vector simultáneo. Si el vector concurrente está vacío, el valor devuelto no está definido. Este método es seguro para simultaneidad.
reference back();
const_reference back() const;
Valor devuelto
Una referencia o una const referencia al último elemento del vector concurrente.
empezar
Devuelve un iterador de tipo iterator o const_iterator al principio del vector simultáneo. Este método es seguro para simultaneidad.
iterator begin();
const_iterator begin() const;
Valor devuelto
Un iterador de tipo iterator o const_iterator al principio del vector concurrente.
capacidad
Devuelve el tamaño máximo al que puede crecer el vector simultáneo sin tener que asignar más memoria. Este método es seguro para simultaneidad.
size_type capacity() const;
Valor devuelto
El tamaño máximo al que puede crecer el vector concurrente sin tener que asignar más memoria.
Comentarios
A diferencia de una biblioteca estándar de C++ vector, un objeto concurrent_vector no mueve los elementos existentes si asigna más memoria.
cbegin
Devuelve un iterador de tipo const_iterator al principio del vector simultáneo. Este método es seguro para simultaneidad.
const_iterator cbegin() const;
Valor devuelto
Devuelve un iterador de tipo const_iterator al principio del vector simultáneo.
cend
Devuelve un iterador de tipo const_iterator al principio del vector simultáneo. Este método es seguro para simultaneidad.
const_iterator cend() const;
Valor devuelto
Un iterador de tipo const_iterator al final del vector concurrente.
eliminar
Borra todos los elementos del vector simultáneo. 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 el vector simultáneo al llamar a este método.
clear no libera matrices internas. Para liberar matrices internas, llame a la función shrink_to_fit después de clear.
concurrent_vector
Construye un vector simultáneo.
explicit concurrent_vector(
const allocator_type& _Al = allocator_type());
concurrent_vector(
const concurrent_vector& _Vector);
template<class M>
concurrent_vector(
const concurrent_vector<T,
M>& _Vector,
const allocator_type& _Al = allocator_type());
concurrent_vector(
concurrent_vector&& _Vector);
explicit concurrent_vector(
size_type _N);
concurrent_vector(
size_type _N,
const_reference _Item,
const allocator_type& _Al = allocator_type());
template<class _InputIterator>
concurrent_vector(_InputIterator _Begin,
_InputIterator _End,
const allocator_type& _Al = allocator_type());
Parámetros
M
El tipo de asignador del vector de origen.
_InputIterator
El tipo de iterador de entrada.
_Al
La clase de asignador que se usa con este objeto.
_Vector
El objeto de origen concurrent_vector del que copiar o mover elementos.
_N
Capacidad inicial del objeto concurrent_vector.
_Artículo
El valor de elementos en el objeto construido.
_Empezar
Posición del primer elemento en el intervalo de elementos que se va a copiar.
_Fin
Posición del primer elemento más allá del intervalo de elementos que se va a copiar.
Comentarios
Todos los constructores almacenan un objeto de asignador _Al e inicializan el vector.
El primer constructor especifica un vector inicial vacío y especifica explícitamente el tipo de asignador. que se va a utilizar.
El segundo y tercer constructor especifican una copia del vector simultáneo _Vector.
El cuarto constructor especifica un movimiento del vector simultáneo _Vector.
El quinto constructor especifica una repetición de un número especificado (_N) de elementos del valor predeterminado para la clase T.
El sexto constructor especifica una repetición de elementos (_N) de valor _Item.
El último constructor especifica los valores proporcionados por el intervalo de iterador [ _Begin, _End).
~concurrent_vector
Borra todos los elementos y destruye este vector simultáneo.
~concurrent_vector();
crbegin
Devuelve un iterador de tipo const_reverse_iterator al principio del vector simultáneo. Este método es seguro para simultaneidad.
const_reverse_iterator crbegin() const;
Valor devuelto
Devuelve un iterador de tipo const_reverse_iterator al principio del vector simultáneo.
crend
Devuelve un iterador de tipo const_reverse_iterator al principio del vector simultáneo. Este método es seguro para simultaneidad.
const_reverse_iterator crend() const;
Valor devuelto
Un iterador de tipo const_reverse_iterator al final del vector concurrente.
vacío
Comprueba si el vector simultáneo está vacío 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 el vector estaba vacío en el momento en que se llamó a la función; de lo contrario, false.
fin
Devuelve un iterador de tipo iterator o const_iterator al principio del vector simultáneo. Este método es seguro para simultaneidad.
iterator end();
const_iterator end() const;
Valor devuelto
Un iterador de tipo iterator o const_iterator al final del vector simultáneo.
parte frontal
Devuelve una referencia o una const referencia al último elemento del vector simultáneo. Si el vector concurrente está vacío, el valor devuelto no está definido. Este método es seguro para simultaneidad.
reference front();
const_reference front() const;
Valor devuelto
Devuelve una referencia o una const referencia al primer elemento del vector concurrente.
get_allocator
Devuelve una copia del asignador utilizado para construir el vector concurrente. Este método es seguro para simultaneidad.
allocator_type get_allocator() const;
Valor devuelto
Una copia del asignador usado para construir el objeto concurrent_vector.
grow_by
Aumenta este vector simultáneo por _Delta elementos. Este método es seguro para simultaneidad.
iterator grow_by(
size_type _Delta);
iterator grow_by(
size_type _Delta,
const_reference _Item);
Parámetros
_Delta
Número de elementos que se van a anexar al objeto.
_Artículo
Valor con el que inicializar los nuevos elementos.
Valor devuelto
Iterador al primer elemento añadido.
Comentarios
Si _Item no se especifica, los nuevos elementos se construyen de forma predeterminada.
crecer_al_menos
Crece este vector simultáneo hasta que tiene al menos _N elementos. Este método es seguro para simultaneidad.
iterator grow_to_at_least(size_type _N);
Parámetros
_N
Nuevo tamaño mínimo para el concurrent_vector objeto.
Valor devuelto
Iterador que apunta al principio de la secuencia anexada o al elemento en el índice _N si no se anexa ningún elemento.
tamaño_máximo
Devuelve el número máximo de elementos que puede contener el vector simultáneo. Este método es seguro para simultaneidad.
size_type max_size() const;
Valor devuelto
Número máximo de elementos que puede contener el concurrent_vector objeto.
operador =
Asigna el contenido de otro objeto concurrent_vector a este. Este método no es seguro para la simultaneidad.
concurrent_vector& operator= (
const concurrent_vector& _Vector);
template<class M>
concurrent_vector& operator= (
const concurrent_vector<T, M>& _Vector);
concurrent_vector& operator= (
concurrent_vector&& _Vector);
Parámetros
M
El tipo de asignador del vector de origen.
_Vector
Objeto concurrent_vector de origen.
Valor devuelto
Una referencia a este objeto concurrent_vector.
operador[]
Proporciona acceso al elemento en el índice especificado en el vector simultáneo. Este método es seguro para las operaciones de lectura en concurrencia, y también mientras se aumenta el vector, siempre y cuando haya asegurado que el valor _Index es menor que el tamaño del vector concurrente.
reference operator[](size_type _index);
const_reference operator[](size_type _index) const;
Parámetros
_Índice
Índice del elemento al que se hará referencia.
Valor devuelto
Referencia al elemento en el índice especificado.
Comentarios
La versión de la función operator [] que devuelve una referencia no-const no se puede usar para escribir concurrentemente en el elemento desde diferentes subprocesos. Se debe usar un objeto de sincronización diferente para sincronizar las operaciones simultáneas de lectura y escritura en el mismo elemento de datos.
No se realiza ninguna comprobación de límites para asegurarse de que _Index es un índice válido en el vector simultáneo.
push_back
Anexa el elemento especificado al final del vector simultáneo. Este método es seguro para simultaneidad.
iterator push_back(const_reference _Item);
iterator push_back(T&& _Item);
Parámetros
_Artículo
Valor que se va a agregar.
Valor devuelto
Un iterador para el elemento agregado.
rbegin
Devuelve un iterador de tipo reverse_iterator o const_reverse_iterator al principio del vector simultáneo. Este método es seguro para simultaneidad.
reverse_iterator rbegin();
const_reverse_iterator rbegin() const;
Valor devuelto
Un iterador de tipo reverse_iterator o const_reverse_iterator al principio del vector concurrente.
rasgar
Devuelve un iterador de tipo reverse_iterator o const_reverse_iterator al principio del vector simultáneo. Este método es seguro para simultaneidad.
reverse_iterator rend();
const_reverse_iterator rend() const;
Valor devuelto
Un iterador de tipo reverse_iterator o const_reverse_iterator al final del vector simultáneo.
reserva
Asigna suficiente espacio para aumentar el tamaño _N del vector simultáneo sin tener que asignar más memoria más adelante. Este método no es seguro para la simultaneidad.
void reserve(size_type _N);
Parámetros
_N
Número de elementos para los que se preasigna espacio.
Comentarios
reserve no es seguro de simultaneidad. Debe asegurarse de que ningún otro subproceso invoca métodos en el vector simultáneo al llamar a este método. La capacidad del vector simultáneo después de que el método devuelva puede ser mayor que la reserva solicitada.
redimensionar
Cambia el tamaño del vector simultáneo al tamaño solicitado, eliminando o agregando elementos según sea necesario. Este método no es seguro para la simultaneidad.
void resize(
size_type _N);
void resize(
size_type _N,
const T& val);
Parámetros
_N
Nuevo tamaño del concurrent_vector.
val
El valor de elementos nuevos añadido al vector si el nuevo tamaño es mayor que el tamaño original. Si el valor se omite, a los nuevos elementos se les asigna el valor predeterminado para la clase.
Comentarios
Si el tamaño del contenedor es menor que el tamaño solicitado, se agregan elementos al vector hasta que alcanza el tamaño solicitado. Si el tamaño del contenedor es mayor que el tamaño solicitado, se eliminan los elementos más cercanos al final del contenedor hasta que este alcanza el tamaño _N. Si el tamaño actual del contenedor es igual que el tamaño solicitado, no se lleva a cabo ninguna acción.
resize no es seguro para la simultaneidad. Debe asegurarse de que ningún otro subproceso invoca métodos en el vector simultáneo al llamar a este método.
ajustar_a_tamaño
Compacta la representación interna del vector simultáneo para reducir la fragmentación y optimizar el uso de memoria. Este método no es seguro para la simultaneidad.
void shrink_to_fit();
Comentarios
Este método volverá a asignar internamente elementos de movimiento de memoria, lo que invalidará todos los iteradores.
shrink_to_fit no es seguro de simultaneidad. Debe asegurarse de que ningún otro subproceso invoca métodos en el vector simultáneo al llamar a este método.
tamaño
Devuelve el número de elementos en el vector concurrente. Este método es seguro para simultaneidad.
size_type size() const;
Valor devuelto
Número de elementos en este objeto concurrent_vector.
Comentarios
Se garantiza que el tamaño devuelto incluya todos los elementos anexados mediante llamadas a la función push_back, o las operaciones de crecimiento que se hayan completado antes de invocar este método. Sin embargo, también puede incluir elementos que se han asignado pero aún están en construcción mediante llamadas simultáneas a cualquiera de los métodos de crecimiento.
intercambio
Intercambia el contenido de dos vectores concurrentes. Este método no es seguro para la simultaneidad.
void swap(concurrent_vector& _Vector);
Parámetros
_Vector
Objeto concurrent_vector con el que se va a intercambiar contenido.
Consulte también
espacio de nombres de concurrencia
Contenedores y objetos paralelos