Espacios de nombres
Variantes

std::flat_set<Key,Compare,KeyContainer>::flat_set

De cppreference.com

[edit template]
 
 
 
 
<tbody> </tbody>
flat_set() : flat_set(key_compare()) { }
(1) (desde C++23)
template< class Allocator > flat_set( const flat_set& other, const Allocator& alloc );
(2) (desde C++23)
template< class Allocator > flat_set( flat_set&& other, const Allocator& alloc );
(3) (desde C++23)
explicit flat_set( container_type cont, {{#pad:|8}} const key_compare& comp = key_compare() );
(4) (desde C++23)
template< class Allocator > flat_set( const container_type& cont, const Allocator& alloc );
(5) (desde C++23)
template< class Allocator > flat_set( const container_type& cont, const key_compare& comp, {{#pad:|8}} const Allocator& alloc );
(6) (desde C++23)
flat_set( std::sorted_equivalent_t s, container_type cont, {{#pad:|8}} const key_compare& comp = key_compare() ) : c(std::move(cont)), compare(comp) { }
(7) (desde C++23)
template< class Allocator > flat_set( std::sorted_equivalent_t s, const container_type& cont, {{#pad:|8}} const Allocator& alloc );
(8) (desde C++23)
template< class Allocator > flat_set( std::sorted_equivalent_t s, const container_type& cont, {{#pad:|8}} const key_compare& comp, const Allocator& alloc );
(9) (desde C++23)
explicit flat_set( const key_compare& comp ) : c(), compare(comp) { }
(10) (desde C++23)
template< class Allocator > flat_set( const key_compare& comp, const Allocator& alloc );
(11) (desde C++23)
template< class Allocator > explicit flat_set( const Allocator& alloc );
(12) (desde C++23)
template< class InputIter > flat_set( InputIter first, InputIter last, {{#pad:|8}} const key_compare& comp = key_compare() ) : c(), compare(comp);
(13) (desde C++23)
template< class InputIter, class Allocator > flat_set( InputIter first, InputIter last, {{#pad:|8}} const key_compare& comp, const Allocator& alloc );
(14) (desde C++23)
template< class InputIter, class Allocator > flat_set( InputIter first, InputIter last, const Allocator& alloc );
(15) (desde C++23)
template< container-compatible-range<value_type> R > flat_set( std::from_range_t, R&& rg, const key_compare& comp ) : flat_set(comp);
(16) (desde C++23)
template< container-compatible-range<value_type> R > flat_set( std::from_range_t fr, R&& rg ) : flat_set( fr, std::forward<R>(rg), key_compare() ) { }
(17) (desde C++23)
template< container-compatible-range<value_type> R, class Allocator > flat_set( std::from_range_t, R&& rg, const Allocator& alloc );
(18) (desde C++23)
template< container-compatible-range<value_type> R, class Allocator > flat_set( std::from_range_t, R&& rg, const key_compare& comp, {{#pad:|8}} const Allocator& alloc );
(19) (desde C++23)
template< class InputIter > flat_set( std::sorted_equivalent_t s, InputIter first, InputIter last, {{#pad:|8}} const key_compare& comp = key_compare() ) : c(first, last), compare(comp) { }
(20) (desde C++23)
template< class InputIter, class Allocator > flat_set( std::sorted_equivalent_t s, InputIter first, InputIter last, {{#pad:|8}} const key_compare& comp, const Allocator& alloc );
(21) (desde C++23)
template< class InputIter, class Allocator > flat_set( std::sorted_equivalent_t s, InputIter first, InputIter last, {{#pad:|8}} const Allocator& alloc );
(22) (desde C++23)
flat_set( std::initializer_list<value_type> init, {{#pad:|8}} const key_compare& comp = key_compare() ) : flat_set(init.begin(), init.end(), comp) { }
(23) (desde C++23)
template< class Allocator > flat_set( std::initializer_list<value_type> init, const key_compare& comp, {{#pad:|8}} const Allocator& alloc );
(24) (desde C++23)
template< class Allocator > flat_set( std::initializer_list<value_type> init, const Allocator& alloc );
(25) (desde C++23)
flat_set( std::sorted_equivalent_t s, std::initializer_list<value_type> init, {{#pad:|8}} const key_compare& comp = key_compare() ) : flat_set(s, init.begin(), init.end(), comp) { }
(26) (desde C++23)
template< class Allocator > flat_set( std::sorted_equivalent_t s, std::initializer_list<value_type> init, {{#pad:|8}} const key_compare& comp, const Allocator& alloc );
(27) (desde C++23)
template< class Allocator > flat_set( std::sorted_equivalent_t s, std::initializer_list<value_type> init, {{#pad:|8}} const Allocator& alloc );
(28) (desde C++23)

Construye un nuevo adaptador de contenedor a partir de una variedad de fuentes de datos y, opcionalmente, proporciona un objeto de función de comparación comp y/o un asignador alloc.

1) Un constructor por defecto. Construye un adaptador de contenedor vacío.
2) Un constructor de copia. Construye c con la copia del contenido de other.c y compare con other.compare. Véase la nota de uso de asignador a continuación.
3) Un constructor de movimiento. Construye el adaptador de contenedor con el contenido de other utilizando la semántica de movimiento. Véase la nota de uso de asignador a continuación.
4) Construye el contenedor subyacente con el contenido del contenedor cont. Primero, inicializa c con std::move(cont) y compare con comp. Luego ordena c con respecto a comp.
5) Igual que (4), equivale a flat_set(cont);. Véase la nota de uso de asignador a continuación.
6) Igual que (4), equivalente a flat_set(cont, comp);. Véase la nota de uso de asignador a continuación.
7) Construye el contenedor subyacente con el contenido del otro contenedor cont. Inicializa c con std::move(cont) y compare con comp.
8) Igual que (7), equivalente a flat_set(s, cont);. Véase la nota de uso de asignador a continuación.
9) Igual que (7), equivalente a flat_set(s, cont, comp);. Véase la nota de uso de asignador a continuación.
10) Construye un adaptador de contenedor vacío.
11,12) Construye un adaptador de contenedor vacío. Véase la nota de uso de asignador a continuación.
13) Construye el adaptador contenedor con el contenido del rango [firstlast), equivalente a insert(first, last);.
14,15) Igual que (13). Véase la nota de uso de asignador a continuación.
16) Construye el adaptador contenedor con el contenido del rango rg. Primero, usa (10) como constructor delegador. Luego inicializa c con el contenido de rg como si fuera por insert_range(std::forward<R>(rg));.
17) Igual que (16) usándolo como constructor delegador.
18,19) Igual que (16). Véase la nota de uso de asignador a continuación.
20) Construye el contenedor subyacente con el contenido del rango [primeroúltimo). Inicializa c con c(first, last) y compare con compare(comp).
21,22) Igual que (20). Véase la nota de uso de asignador a continuación.
23) Un constructor por lista de inicializadores. Construye el contenedor subyacente con el contenido de la lista de inicializadores init, usando (13) como constructor delegador.
24,25) Igual que (23). Véase la nota de uso de asignador a continuación.
26) Un constructor por lista de inicializadores. Construye el contenedor subyacente con el contenido de la lista de inicializadores init, usando (20) como constructor delegador.
27,28) Guardar como (26). Véase la nota de uso de asignador a continuación.

Nota para las sobrecargas (13-15,20-22): Si [firstlast) no es un rango válido, el comportamiento no está definido.

Nota de uso de asignador

Los constructores (2,3,5,6,8,9,11,12,14,15,17,19,21,22,24,25,27,28) son equivalentes a los constructores correspondientes que no usan asignador, excepto que c se construye con construcción de uso de asignador. Estas sobrecargas participan en la resolución de sobrecargas solo si std::uses_allocator_v<container_type, Allocator> es true.

Parámetros

cont - Un contenedor que se utilizará como fuente para inicializar el contenedor subyacente.
other - Otro flat_set que se utilizará como fuente para inicializar los elementos del contenedor subyacente.
alloc - Un asignador que se utilizará para todas las asignaciones de memoria del contenedor subyacente.
comp - Un objeto función que se utilizará para todas las comparaciones de claves.
first, last - El par de iteradores que definen el fuente rango fuente de elementos a copiar
init - Una lista de inicializadores para inicializar los elementos del contenedor subyacente.
rg - Un rango compatible con contenedor (es decir, un input_range cuyos elementos se pueden convertir a value_type) que se utilizará como fuente para inicializar el contenedor subyacente.
fr - Una etiqueta de desambiguación que indica que el miembro contenido debe construirse en rango.
s - Una etiqueta de desambiguación que indica que la secuencia de entrada está ordenada con respecto a compare
Requisitos de tipo
-
InputIt debe satisfacer los requisitos de IteradorDeEntradaLegado.
-
Compare debe satisfacer los requisitos de Comparar.
-
Allocator debe satisfacer los requisitos de Asignador.

Complejidad

1) Constante.
2) Lineal en tamaño de other.
3) Igual que el constructor de movimiento correspondiente del contenedor envuelto, es decir, constante o lineal en tamaño de cont.
4-6) Lineal en N si cont está ordenado con respecto a compare, de lo contrario 𝓞(N·log(N)), donde N es el valor de cont.size() antes de esta llamada.
7-9) Igual que el constructor de movimiento correspondiente del contenedor envuelto, es decir, constante o lineal en tamaño de cont.
10-12) Constante.
13-15) Lineal en N si el rango de entrada [firstlast) está ordenado con respecto a compare, de lo contrario 𝓞(N·log(N)), donde N es el valor de cont.size() antes de esta llamada.
16-19) Lineal en N si el rango de entrada rg está ordenado con respecto a compare, de lo contrario 𝓞(N·log(N)), donde N es el valor de cont.size() antes de esta llamada.
20-22) Lineal en tamaño de [firstlast).
23-25) Lineal en N si los elementos de init están ordenados con respecto a compare, de lo contrario 𝓞(N·log(N)), donde N es el valor de cont.size() antes de esta llamada.
26-28) Lineal en tamaño de init.

Excepciones

Las llamadas a Allocator::allocate pueden generar una excepción.

Notas

Después de la construcción por movimiento de un contenedor (la sobrecarga (3,16-19)), las referencias, punteros e iteradores (aparte del iterador al final) a other permanecen válidos, pero se refieren a los elementos que ahora se encuentran en *this. El estándar actual da esta garantía vía la generalización en [container.requirements.general]/12, y una garantía más directa está bajo consideración vía LWG 2321.

Ejemplo

Véase también

(C++23)
Asigna valores al contenedor.
(función miembro pública) [editar]