std::flat_map
Definido en el archivo de encabezado <flat_map> | ||
template< class Key, | (desde C++23) | |
El mapa plano es un adaptador de contenedor que brinda la funcionalidad de un contenedor asociativo que contiene pares clave-valor con claves únicas. Las claves se ordenan mediante la función de comparación Compare
.
La plantilla de clase flat_map
actúa como contenedor de los dos contenedores subyacentes, que se pasan como objetos de tipo KeyContainer
y MappedContainer
respectivamente. El primer contenedor está ordenado y, para cada clave, su valor correspondiente se encuentra en el segundo contenedor en el mismo índice (desplazamiento). La cantidad de elementos en ambos contenedores es la misma.
En todos los lugares donde la biblioteca estándar utiliza los requisitos Comparar, la unicidad se determina mediante la relación de equivalencia. De manera informal, dos objetos a y b se consideran equivalentes si ninguno se compara menor que el otro: !comp(a, b) && !comp(b, a).
std::flat_map
cumple con los requisitos de Contenedor, ContenedorReversible, requisitos de contenedor opcionales, y todos los requisitos de ContenedorAsociativo (incluida la complejidad de búsqueda logarítmica), excepto que:
- los requisitos relacionados con los nodos no son aplicables,
- los requisitos de invalidación de iteradores difieren,
- la complejidad de las operaciones de inserción y borrado es lineal.
Un conjunto plano admite la mayoría de las operaciones de ContenedorAsociativo que usan claves únicas.
Contenido |
[editar] Invalidación de iteradores
Esta sección está incompleta |
[editar] Parámetros de plantilla
Key | - | The type of the keys. The program is ill-formed if Key is not the same type as KeyContainer::value_type . |
T | - | The type of mapped values. The program is ill-formed if T is not the same type as MappedContainer::value_type . |
Compare | - | Un tipo Comparar que proporciona un ordenamiento débil estricto. |
KeyContainer MappedContainer | - | Los tipos del contenedor subyacente ContenedorDeSecuencia para almacenar claves y valores mapeados correspondientemente. Los iteradores de dichos contenedores deben satisfacer IteradorDeAccesoAleatorioLegado o el modelo random_access_iterator . Las invocaciones de sus funciones miembro size y max_size no deben finalizar mediante una excepción.Los contenedores estándar std::vector y std::deque satisfacen estos requisitos. |
[editar] Tipos miembro
Tipo | Definición |
key_container_type | KeyContainer |
mapped_container_type | MappedContainer |
key_type | Key |
mapped_type | T |
key_compare | Compare |
reverse_iterator | std::reverse_iterator<iterator> |
const_reverse_iterator | std::reverse_iterator<const_iterator> |
containers | Tipo que describe los contenedores subyacentes struct containers |
[editar] Clases miembro
Compara objetos de tipo value_type .(clase) |
[editar] Objetos miembro
Miembro | Descripción |
c (private) | Los contenedores adaptados. (objeto miembro solo de exposición*) |
compare (private) | El objeto función de comparación. (objeto miembro solo de exposición*) |
[editar] Funciones miembro
Construye el contenedor flat_map .(función miembro pública) | |
(destructor) (implícitamente declarado) | Destruye todos los elementos del adaptador de contenedor. (función miembro pública) |
(C++23) | Asigna valores al contenedor. (función miembro pública) |
Acceso a elementos | |
Accede al elemento especificado con comprobación de límites. (función miembro pública) | |
(C++23) | Accede el elemento especificado. (función miembro pública) |
Iteradores | |
(C++11) | Devuelve un iterador al principio. (función miembro pública) |
(C++11) | Devuelve un iterador al final. (función miembro pública) |
(C++11) | Devuelve un iterador inverso al principio. (función miembro pública) |
Devuelve un iterador inverso al final. (función miembro pública) | |
Capacidad | |
(C++23) | Comprueba si el contenedor está vacío. (función miembro pública) |
(C++23) | Devuelve el número de elementos. (función miembro pública) |
(C++23) | Devuelve el número máximo posible de elementos. (función miembro pública) |
Modificadores | |
(C++11) | Construye el elemento en el sitio. (función miembro pública) |
(C++11) | Construye elementos en el sitio utilizando una pista. (función miembro pública) |
(C++17) | Inserta en el sitio si la clave no existe; no hace nada si la clave existe. (función miembro pública) |
(C++23) | Inserta elementos (función miembro pública) |
Inserta un rango de elementos. (función miembro pública) | |
(C++17) | Inserta un elemento o asigna el elemento actual si la clave ya existe. (función miembro pública) |
(C++17) | Extrae nodos del contenedor (función miembro pública) |
Reemplaza los contenedores subyacentes. (función miembro pública) | |
(C++23) | Borra elementos (función miembro pública) |
(C++23) | Intercambia el contenido. (función miembro pública) |
(C++23) | Borra el contenido. (función miembro pública) |
Búsqueda | |
(C++23) | Encuentra un elemento con una clave específica. (función miembro pública) |
(C++23) | Devuelve el número de elementos que coinciden con una clave específica. (función miembro pública) |
(C++20) | Comprueba si el contenedor contiene un elemento con una clave específica. (función miembro pública) |
Devuelve un iterador al primer elemento no menor que la clave dada. (función miembro pública) | |
Devuelve un iterador al primer elemento mayor que la clave dada. (función miembro pública) | |
(C++23) | Devuelve un rango de elementos que coinciden con una clase específica. (función miembro pública) |
Observadores | |
Devuelve la función que compara las claves. (función miembro pública) | |
Devuelve la función que compara las claves en objetos de tipo value_type .(función miembro pública) | |
Acceso directo al contenedor de claves subyacente. (función miembro pública) | |
Acceso directo al contenedor de valores subyacente. (función miembro pública) |
[editar] Funciones no miembro
(eliminado en C++20)(eliminado en C++20)(eliminado en C++20)(eliminado en C++20)(eliminado en C++20)(C++20) | Compara lexicográficamente los valores de flat_map. (plantilla de función) |
(C++23) | Especializa el algoritmo std::swap. (plantilla de función) |
(C++20) | Borra todos los elementos que satisfacen un criterio específico. (plantilla de función) |
[editar] Clases auxiliares
Especializa el rasgo de tipo std::uses_allocator. (plantilla de función) |
[editar] Etiquetas
(C++23) | Indica que los elementos de un rango están ordenados y son únicos. (tag) |
[editar] Guías de deducción
[editar] Notas
Los tipos miembro iterator
y const_iterator
pueden ser alias del mismo tipo. Esto significa que definir un par de sobrecargas de función utilizando los dos tipos como tipos de parámetro puede violar la Regla de una definición (ODR). Dado que iterator
es convertible a const_iterator
, una sola función con un const_iterator
como tipo de parámetro funcionará en su lugar.
Macro de prueba de característica | |||
---|---|---|---|
__cpp_lib_flat_map | 202207L | (C++23) | std::flat_map and std::flat_multimap |
[editar] Ejemplo
Esta sección está incompleta Razón: sin ejemplo |
[editar] Véase también
(C++23) | Adapta dos contenedores para proporcionar una colección de pares clave-valor, ordenados por claves. (plantilla de clase) |
Colección de pares de clave y valor, ordenados por claves, donde las claves son únicas. (plantilla de clase) | |
(desde C++11) | Colección de pares de clave-valor, dispersos (hashed) por claves, donde las claves son únicas. (plantilla de clase) |