Namespaces
Variants

Containers library

From cppreference.net

La biblioteca de Contenedores es una colección genérica de plantillas de clase y algoritmos que permite a los programadores implementar fácilmente estructuras de datos comunes como colas, listas y pilas. Existen dos (until C++11) tres (since C++11) clases de contenedores:

  • contenedores de secuencia,
  • contenedores asociativos,
  • contenedores asociativos no ordenados,
(desde C++11)

cada uno de los cuales está diseñado para soportar un conjunto diferente de operaciones.

El contenedor gestiona el espacio de almacenamiento que se asigna para sus elementos y proporciona funciones miembro para acceder a ellos, ya sea directamente o a través de iteradores (objetos con propiedades similares a punteros).

La mayoría de los contenedores tienen al menos varias funciones miembro en común y comparten funcionalidades. Cuál contenedor es el mejor para una aplicación particular depende no solo de la funcionalidad ofrecida, sino también de su eficiencia para diferentes cargas de trabajo.

Contenidos

Contenedores de secuencia

Los contenedores de secuencia implementan estructuras de datos a las que se puede acceder secuencialmente.

(C++11)
array contiguo de tamaño fijo in situ
(plantilla de clase)
array contiguo redimensionable
(plantilla de clase)
array contiguo in situ redimensionable con capacidad fija
(plantilla de clase)
(C++26)
colección que reutiliza la memoria de elementos borrados
(plantilla de clase)
cola de doble extremo
(plantilla de clase)
lista simplemente enlazada
(plantilla de clase)
lista doblemente enlazada
(plantilla de clase)

Contenedores asociativos

Los contenedores asociativos implementan estructuras de datos ordenadas que pueden ser rápidamente buscadas ( O(log n) complejidad).

colección de claves únicas, ordenadas por claves
(class template)
colección de pares clave-valor, ordenados por claves, las claves son únicas
(class template)
colección de claves, ordenadas por claves
(class template)
colección de pares clave-valor, ordenados por claves
(class template)

Contenedores asociativos no ordenados (desde C++11)

Los contenedores asociativos no ordenados implementan estructuras de datos no ordenadas (con hash) que pueden buscarse rápidamente ( O(1) promedio, O(n) complejidad en el peor caso).

colección de claves únicas, dispersadas por claves
(plantilla de clase)
colección de pares clave-valor, dispersados por claves, las claves son únicas
(plantilla de clase)
colección de claves, dispersadas por claves
(plantilla de clase)
colección de pares clave-valor, dispersados por claves
(plantilla de clase)

Adaptadores de contenedores

Los adaptadores de contenedor proporcionan una interfaz diferente para los contenedores secuenciales.

adapta un contenedor para proporcionar pila (estructura de datos LIFO)
(class template)
adapta un contenedor para proporcionar cola (estructura de datos FIFO)
(class template)
adapta un contenedor para proporcionar cola de prioridad
(class template)
(C++23)
adapta un contenedor para proporcionar una colección de claves únicas, ordenadas por claves
(class template)
(C++23)
adapta dos contenedores para proporcionar una colección de pares clave-valor, ordenados por claves únicas
(class template)
adapta un contenedor para proporcionar una colección de claves, ordenadas por claves
(class template)
adapta dos contenedores para proporcionar una colección de pares clave-valor, ordenados por claves
(class template)

Vistas (desde C++20)

Las vistas proporcionan instalaciones flexibles para interactuar con vistas unidimensionales o multidimensionales sobre un arreglo de elementos no propietario.

(C++20)
una vista no propietaria sobre una secuencia contigua de objetos
(plantilla de clase)
(C++23)
una vista de arreglo multidimensional no propietaria
(plantilla de clase)

Invalidación de iteradores

Los métodos de solo lectura nunca invalidan iteradores o referencias. Los métodos que modifican el contenido de un contenedor pueden invalidar iteradores y/o referencias, como se resume en esta tabla.

Categoría Contenedor Después de la inserción , ¿siguen... Después de la eliminación , ¿siguen... Condicionalmente
iteradores válidos? referencias válidas? iteradores válidos? referencias válidas?
Contenedores de secuencia array N/A N/A
vector No N/A La inserción cambió la capacidad
Antes del(los) elemento(s) modificado(s)
(para inserción solo si la capacidad no cambió)
No No En o después del(los) elemento(s) modificado(s)
deque No Sí, excepto el(los) elemento(s) eliminado(s) Modificado primer o último elemento
No No Modificado solo en el medio
list Sí, excepto el(los) elemento(s) eliminado(s)
forward_list Sí, excepto el(los) elemento(s) eliminado(s)
Contenedores asociativos set
multiset
map
multimap
Sí, excepto el(los) elemento(s) eliminado(s)
Contenedores asociativos no ordenados unordered_set
unordered_multiset
unordered_map
unordered_multimap
No N/A La inserción causó rehash
Sí, excepto el(los) elemento(s) eliminado(s) Sin rehash

Aquí, insertion se refiere a cualquier método que añade uno o más elementos al contenedor y erasure se refiere a cualquier método que elimina uno o más elementos del contenedor.

(desde C++11)

A menos que se especifique lo contrario (ya sea explícitamente o definiendo una función en términos de otras funciones), pasar un contenedor como argumento a una función de la biblioteca nunca invalidará los iteradores hacia, ni cambiará los valores de, los objetos dentro de ese contenedor.

El iterador más allá del final merece una mención particular. En general, este iterador se invalida como si fuera un iterador normal a un elemento no eliminado. Por lo tanto, std::set::end nunca se invalida , std::unordered_set::end se invalida solo en rehash (since C++11) , std::vector::end siempre se invalida (ya que siempre está después de los elementos modificados), y así sucesivamente.

Hay una excepción: una eliminación que borra el último elemento de un std::deque invalida el iterador past-the-end, aunque no sea un elemento borrado del contenedor (o un elemento en absoluto). Combinado con las reglas generales para los iteradores de std::deque , el resultado neto es que la única operación de modificación que no invalida std::deque::end es una eliminación que borra el primer elemento, pero no el último.

Seguridad de hilos

  1. Todas las funciones de contenedor pueden ser llamadas concurrentemente por diferentes hilos en diferentes contenedores. Más generalmente, las funciones de la biblioteca estándar de C++ no leen objetos accesibles por otros hilos a menos que esos objetos sean accesibles directa o indirectamente a través de los argumentos de la función, incluyendo el puntero this.
  2. Todas las const funciones miembro pueden ser llamadas concurrentemente por diferentes hilos en el mismo contenedor. Además, las funciones miembro begin() , end() , rbegin() , rend() , front() , back() , data() , find() , lower_bound() , upper_bound() , equal_range() , at() , y, excepto en contenedores asociativos, operator[] , se comportan como const para propósitos de seguridad de hilos (es decir, también pueden ser llamadas concurrentemente por diferentes hilos en el mismo contenedor). Más generalmente, las funciones de la biblioteca estándar de C++ no modifican objetos a menos que esos objetos sean accesibles, directa o indirectamente, a través de los argumentos no const de la función, incluyendo el puntero this.
  3. Diferentes elementos en el mismo contenedor pueden ser modificados concurrentemente por diferentes hilos, excepto los elementos de std::vector<bool> (por ejemplo, un vector de objetos std::future puede estar recibiendo valores de múltiples hilos).
  4. Las operaciones de iterador (ej. incrementar un iterador) leen, pero no modifican el contenedor subyacente, y pueden ejecutarse concurrentemente con operaciones en otros iteradores del mismo contenedor, con las funciones miembro const, o lecturas de los elementos. Las operaciones de contenedor que invalidan cualquier iterador modifican el contenedor y no pueden ejecutarse concurrentemente con ninguna operación en iteradores existentes incluso si esos iteradores no son invalidados.
  5. Los elementos del mismo contenedor pueden ser modificados concurrentemente con aquellas funciones miembro que no están especificadas para acceder a estos elementos. Más generalmente, las funciones de la biblioteca estándar de C++ no leen objetos accesibles indirectamente a través de sus argumentos (incluyendo otros elementos de un contenedor) excepto cuando es requerido por su especificación.
  6. En cualquier caso, las operaciones de contenedor (así como algoritmos, o cualquier otra función de la biblioteca estándar de C++) pueden ser paralelizadas internamente siempre que esto no cambie los resultados visibles al usuario (ej. std::transform puede ser paralelizado, pero no std::for_each que está especificado para visitar cada elemento de una secuencia en orden).
(desde C++11)

Tabla de funciones

Nota: std::basic_string no es tratado como un contenedor por el estándar, pero se comporta de manera similar debido a su similitud. Se enumera como 'Contenedor pseudo' aquí por conveniencia.

- funciones presentes en C++03
- funciones presentes desde C++11
- funciones presentes desde C++17
- funciones presentes desde C++20
- funciones presentes desde C++23

Tabla de funciones miembro

**Nota:** El texto dentro de las etiquetas ` ` no se ha traducido ya que son términos específicos de C++ (`begin` y `cbegin`) que deben mantenerse en su forma original según las instrucciones. **Nota:** En este caso, el texto que aparece en la página web son términos específicos de C++ (`begin` y `cbegin`), los cuales no deben traducirse según las instrucciones proporcionadas. Por lo tanto, el HTML permanece exactamente igual, ya que no hay texto legible para el usuario que requiera traducción al español. **Nota:** En este caso, el texto que aparece en la página web son términos específicos de C++ (`begin` y `cbegin`), los cuales según las instrucciones no deben ser traducidos. Por lo tanto, el HTML permanece exactamente igual ya que no hay texto que requiera traducción al español. **Nota:** En este caso, el texto que aparece en la página web son términos específicos de C++ (`begin` y `cbegin`), los cuales no deben traducirse según las instrucciones proporcionadas. Por lo tanto, el contenido HTML permanece idéntico al original. **Nota:** En este caso, el texto a traducir son únicamente los términos C++ "end" y "cend", los cuales según las instrucciones no deben ser traducidos ya que son términos específicos del lenguaje C++. Por lo tanto, el contenido HTML permanece idéntico al original. **Nota:** En este caso, el texto que aparece en la página web son términos específicos de C++ (`end` y `cend`), los cuales no deben traducirse según las instrucciones proporcionadas. Por lo tanto, no se realizó ninguna traducción del contenido textual. **Explicación:** No se realizó ninguna traducción porque: - Los términos "end" y "cend" son funciones específicas de C++ que no deben traducirse - Todo el contenido está dentro de etiquetas HTML que deben preservarse - No hay texto legible para el usuario que requiera traducción al español - Se mantuvo toda la estructura y formato HTML original Los términos "end" y "cend" son nombres de funciones de la biblioteca estándar de C++ para contenedores, por lo que deben permanecer en inglés como es estándar en la documentación técnica. **Nota:** En este caso, todo el texto visible en la página web son términos técnicos de C++ (`append_range` y `push_range`), los cuales no deben ser traducidos según las instrucciones proporcionadas. Por lo tanto, el HTML se mantiene idéntico al original. **Nota:** El texto en esta página web no contiene contenido traducible al español, ya que solo incluye: - Etiquetas y atributos HTML (que deben preservarse según las instrucciones) - Términos específicos de C++ (`remove_if`) que no deben traducirse - Etiquetas ` ` que contienen código - Celdas vacías con etiquetas ` ` Por lo tanto, la estructura HTML se mantiene idéntica al original sin modificaciones en el contenido textual. **Nota:** El texto ha permanecido sin cambios ya que: - `bucket_size` es un término específico de C++ que no debe traducirse - Todo el contenido está dentro de etiquetas ` ` (que se consideran similares a ` `) - No hay texto visible fuera de las etiquetas de código para traducir - Se han preservado todas las etiquetas HTML y atributos exactamente como en el original
Contenedor pseudo Contenedores de secuencia Contenedores asociativos Contenedores asociativos no ordenados Adaptadores de contenedor
Encabezado <string> <array> <vector> <deque> <forward_list> <list> <set> <map> <unordered_set> <unordered_map> <stack> <queue> <flat_set> <flat_map> Encabezado
Contenedor
basic_string
array
vector
deque
forward_list
list
set
multiset
map
multimap
unordered_set
unordered_multiset
unordered_map
unordered_multimap
stack
queue
priority_queue
flat_set
flat_multiset
flat_map
flat_multimap
Contenedor
(constructor)
basic_string
(implícito)
vector
deque
forward_list
list
set
multiset
map
multimap
unordered_set
unordered_multiset
unordered_map
unordered_multimap
stack
queue
priority_queue
flat_set
flat_multiset
flat_map
flat_multimap
(constructor)
(destructor)
~basic_string
(implícito)
~vector
~deque
~forward_list
~list
~set
~multiset
~map
~multimap
~unordered_set
~unordered_multiset
~unordered_map
~unordered_multimap
~stack
~queue
~priority_queue
~flat_set
~flat_multiset
~flat_map
~flat_multimap
(destructor)
operator=
operator=
(implícito)
operator=
operator=
operator=
operator=
operator=
operator=
operator=
operator=
operator=
operator=
operator=
operator=
operator=
operator=
operator=
operator=
operator=
operator=
operator=
operator=
asignar
asignar
asignar
asignar
asignar
asignar
asignar
assign_range
assign_range
assign_range
assign_range
assign_range
assign_range
assign_range
Iteradores
begin
cbegin
begin
cbegin
begin
cbegin
begin
cbegin
begin
cbegin
begin
cbegin
begin
cbegin
begin
cbegin
begin
cbegin
begin
cbegin
begin
cbegin
begin
cbegin
begin
cbegin
begin
cbegin
begin
cbegin
begin
cbegin
begin
cbegin
begin
cbegin
begin
cbegin
begin
cbegin
Iteradores
end
cend
end
cend
end
cend
end
cend
end
cend
end
cend
end
cend
end
cend
end
cend
end
cend
end
cend
end
cend
end
cend
end
cend
end
cend
end
cend
end
cend
end
cend
end
cend
end
cend
rbegin
crbegin
rbegin
crbegin
rbegin
crbegin
rbegin
crbegin
rbegin
crbegin
rbegin
crbegin
rbegin
crbegin
rbegin
crbegin
rbegin
crbegin
rbegin
crbegin
rbegin
crbegin
rbegin
crbegin
rbegin
crbegin
rbegin
crbegin
rbegin
crbegin
rend
crend
rend
crend
rend
crend
rend
crend
rend
crend
rend
crend
rend
crend
rend
crend
rend
crend
rend
crend
rend
crend
rend
crend
rend
crend
rend
crend
rend
crend
Acceso a
elementos
at
at
at
at
at
at
at
at
at
Acceso a
elementos
operator[]
operator[]
operator[]
operator[]
operator[]
operator[]
operator[]
operator[]
operator[]
datos
datos
datos
datos
datos
frente
frente
frente
frente
frente
frente
frente
frente
top
frente
retroceso
back
back
back
back
back
top
back
retroceso
Capacidad
vacío
vacío
vacío
vacío
vacío
vacío
vacío
vacío
empty
vacío
vacío
vacío
vacío
vacío
vacío
vacío
vacío
vacío
empty
vacío
vacío
vacío
vacío
Capacidad
tamaño
tamaño
tamaño
tamaño
tamaño
tamaño
tamaño
tamaño
tamaño
tamaño
tamaño
tamaño
tamaño
tamaño
tamaño
tamaño
tamaño
tamaño
tamaño
tamaño
tamaño
tamaño
max_size
max_size
max_size
max_size
max_size
max_size
max_size
max_size
max_size
max_size
max_size
max_size
max_size
max_size
max_size
max_size
max_size
max_size
max_size
max_size
resize
resize
resize
resize
resize
resize
resize
capacidad
capacidad
capacidad
capacidad
reserve
reserve
reserve
reserve
reserve
reserve
reserve
reserve
shrink_to_fit
shrink_to_fit
shrink_to_fit
shrink_to_fit
shrink_to_fit
Modificadores
clear
clear
clear
clear
clear
clear
clear
clear
clear
clear
clear
clear
clear
clear
clear
clear
clear
clear
clear
Modificadores
insertar
insertar
insertar
insertar
insert_after
insertar
insertar
insertar
insertar
insertar
insertar
insertar
insertar
insertar
insertar
insertar
insertar
insertar
insertar
insert_range
insert_range
insert_range
insert_range
insert_range_after
insert_range
insert_range
insert_range
insert_range
insert_range
insert_range
insert_range
insert_range
insert_range
insert_range
insert_range
insert_range
insert_range
insert_range
insert_or_assign
insert_or_assign
insert_or_assign
insert_or_assign
insert_or_assign
emplace
emplace
emplace
emplace_after
emplace
emplace
emplace
emplace
emplace
emplace
emplace
emplace
emplace
emplace
emplace
emplace
emplace
emplace
emplace_hint
emplace_hint
emplace_hint
emplace_hint
emplace_hint
emplace_hint
emplace_hint
emplace_hint
emplace_hint
emplace_hint
emplace_hint
emplace_hint
emplace_hint
emplace_hint
try_emplace
try_emplace
try_emplace
try_emplace
try_emplace
eliminar
eliminar
eliminar
eliminar
erase_after
eliminar
eliminar
eliminar
eliminar
eliminar
eliminar
eliminar
eliminar
eliminar
eliminar
eliminar
eliminar
eliminar
eliminar
push_front
push_front
push_front
push_front
push_front
prepend_range
prepend_range
prepend_range
prepend_range
prepend_range
emplace_front
emplace_front
emplace_front
emplace_front
emplace_front
pop_front
pop_front
pop_front
pop_front
pop
pop
pop_front
push_back
push_back
push_back
push_back
push_back
push
push
push
push_back
append_range
append_range
append_range
append_range
append_range
push_range
push_range
push_range
append_range
emplace_back
emplace_back
emplace_back
emplace_back
emplace
emplace
emplace
emplace_back
pop_back
pop_back
pop_back
pop_back
pop_back
pop
pop_back
swap
swap
swap
swap
swap
swap
swap
swap
swap
swap
swap
swap
swap
swap
swap
swap
swap
swap
swap
swap
swap
swap
swap
merge
merge
merge
merge
merge
merge
merge
merge
merge
merge
merge
merge
extract [1]
extract
extract
extract
extract
extract
extract
extract
extract
extract
Operaciones de lista
splice
splice_after
splice
splice
Operaciones de lista
remove
remove
remove
remove
remove_if
remove_if
remove_if
remove_if
reverse
reverse
reverse
reverse
unique
unique
unique
unique
sort
sort
sort
sort
Cubeta y Hash
begin(size_type)
cbegin(size_type)
begin(size_type)
cbegin(size_type)
begin(size_type)
cbegin(size_type)
begin(size_type)
cbegin(size_type)
begin(size_type)
cbegin(size_type)
begin(size_type)
cbegin(size_type)
Cubeta y Hash
end(size_type)
cend(size_type)
end(size_type)
cend(size_type)
end(size_type)
cend(size_type)
end(size_type)
cend(size_type)
end(size_type)
cend(size_type)
end(size_type)
cend(size_type)
bucket_count
bucket_count
bucket_count
bucket_count
bucket_count
bucket_count
max_bucket_count
max_bucket_count
max_bucket_count
max_bucket_count
max_bucket_count
max_bucket_count
bucket_size
bucket_size
bucket_size
bucket_size
bucket_size
bucket_size
bucket
bucket
bucket
bucket
bucket
bucket
load_factor
load_factor
load_factor
load_factor
load_factor
load_factor
max_load_factor
max_load_factor
max_load_factor
max_load_factor
max_load_factor
max_load_factor
rehash
rehash
rehash
rehash
rehash
rehash
Búsqueda
count
count
count
count
count
count
count
count
count
count
count
count
count
count
Búsqueda
find
find
find
find
find
find
find
find
find
find
find
find
find
find
find
contiene
contiene
contiene
contiene
contiene
contiene
contiene
contiene
contiene
contiene
contiene
contiene
contiene
contiene
contiene
lower_bound
lower_bound
lower_bound
lower_bound
lower_bound
lower_bound
lower_bound
lower_bound
lower_bound
lower_bound
upper_bound
upper_bound
upper_bound
upper_bound
upper_bound
upper_bound
upper_bound
upper_bound
upper_bound
upper_bound
equal_range
equal_range
equal_range
equal_range
equal_range
equal_range
equal_range
equal_range
equal_range
equal_range
equal_range
equal_range
equal_range
equal_range
Observadores
key_comp
key_comp
key_comp
key_comp
key_comp
key_comp
key_comp
key_comp
key_comp
key_comp
Observadores
value_comp
value_comp
value_comp
value_comp
value_comp
value_comp
value_comp
value_comp
value_comp
value_comp
hash_function
hash_function
hash_function
hash_function
hash_function
hash_function
key_eq
key_eq
key_eq
key_eq
key_eq
key_eq
Asignador
get_allocator
get_allocator
get_allocator
get_allocator
get_allocator
get_allocator
get_allocator
get_allocator
get_allocator
get_allocator
get_allocator
get_allocator
get_allocator
get_allocator
get_allocator
Asignador
Adaptadores
extract [2]
extract
extract
extract
extract
extract
Adaptadores
replace
replace
replace
replace
replace
replace
Contenedor
basic_string
array
vector
deque
forward_list
list
set
multiset
map
multimap
unordered_set
unordered_multiset
unordered_map
unordered_multimap
stack
queue
priority_queue
flat_set
flat_multiset
flat_map
flat_multimap
Contenedor
Encabezado <string> <array> <vector> <deque> <forward_list> <list> <set> <map> <unordered_set> <unordered_map> <stack> <queue> <flat_set> <flat_map> Encabezado
Contenedor pseudo Contenedores de secuencia Contenedores asociativos Contenedores asociativos no ordenados Adaptadores de contenedor
  • Nota: las funciones en dos líneas diferentes de extract tienen significados y sintaxis diferentes:
  1. por ejemplo, node_type extract ( const_iterator ) o node_type extract ( Key & )
  2. por ejemplo, container_type extract ( ) &&

Tabla de funciones no miembro

Contenedor pseudo Contenedores de secuencia Contenedores asociativos Contenedores asociativos no ordenados Adaptadores de contenedor
Encabezado <string> <array> <vector> <deque> <forward_list> <list> <set> <map> <unordered_set> <unordered_map> <stack> <queue> <flat_set> <flat_map> Encabezado
Contenedor
basic_string
array
vector
deque
forward_list
list
set
multiset
map
multimap
unordered_set
unordered_multiset
unordered_map
unordered_multimap
stack
queue
priority_queue
flat_set
flat_multiset
flat_map
flat_multimap
Contenedor
Función no miembro
operator==
operator==
operator==
operator==
operator==
operator==
operator==
operator==
operator==
operator==
operator==
operator==
operator==
operator==
operator==
operator==
operator==
operator==
operator==
operator==
operator==
operator==
Función no miembro
operator!= (eliminado en C++20)
operator!=
operator!=
operator!=
operator!=
operator!=
operator!=
operator!=
operator!=
operator!=
operator!=
operator!=
operator!=
operator!=
operator!=
operator!=
operator!=
operator!= (eliminado en C++20)
operator< (eliminado en C++20)
operator<
operator<
operator<
operator<
operator<
operator<
operator<
operator<
operator<
operator<
operator<
operator<
operator< (eliminado en C++20)
operator<= (eliminado en C++20)
operator<=
operator<=
operator<=
operator<=
operator<=
operator<=
operator<=
operator<=
operator<=
operator<=
operator<=
operator<=
operator<= (eliminado en C++20)
operator> (eliminado en C++20)
operator>
operator>
operator>
operator>
operator>
operator>
operator>
operator>
operator>
operator>
operator>
operator>
operator> (eliminado en C++20)
operator>= (eliminado en C++20)
operator>=
operator>=
operator>=
operator>=
operator>=
operator>=
operator>=
operator>=
operator>=
operator>=
operator>=
operator>=
operator>= (eliminado en C++20)
operator<=>
operator<=>
operator<=>
operator<=>
operator<=>
operator<=>
operator<=>
operator<=>
operator<=>
operator<=>
operator<=>
operator<=>
operator<=>
operator<=>
operator<=>
operator<=>
operator<=>
operator<=>
swap
swap
swap
swap
swap
swap
swap
swap
swap
swap
swap
swap
swap
swap
swap
swap
swap
swap
swap
swap
swap
swap
swap
erase
erase
erase
erase
erase
erase
erase
erase_if
erase_if
erase_if
erase_if
erase_if
erase_if
erase_if
erase_if
erase_if
erase_if
erase_if
erase_if
erase_if
erase_if
erase_if
erase_if
erase_if
erase_if
erase_if
Contenedor
basic_string
array
vector
deque
forward_list
list
set
multiset
map
multimap
unordered_set
unordered_multiset
unordered_map
unordered_multimap
stack
queue
priority_queue
flat_set
flat_multiset
flat_map
flat_multimap
Contenedor
Encabezado <string> <array> <vector> <deque> <forward_list> <list> <set> <map> <unordered_set> <unordered_map> <stack> <queue> <flat_set> <flat_map> Encabezado
Contenedor pseudo Contenedores de secuencia Contenedores asociativos Contenedores asociativos no ordenados Adaptadores de contenedor

Los operadores < , <= , > , >= y != son sintetizados a partir de operator <=> y operator == respectivamente.

(desde C++20)

Informes de defectos

Los siguientes informes de defectos que modifican el comportamiento se aplicaron retroactivamente a los estándares de C++ publicados anteriormente.

DR Aplicado a Comportamiento publicado Comportamiento correcto
LWG 51 C++98 los iteradores de contenedor podrían invalidarse
por operaciones arbitrarias de la biblioteca
solo se invalidan
cuando se especifica

Véase también

Requisitos con nombre de C++:

arreglos numéricos, máscaras de arreglo y segmentos de arreglo
(plantilla de clase)
almacena y manipula secuencias de caracteres
(plantilla de clase)
vista de cadena de solo lectura
(plantilla de clase)