Namespaces
Variants

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

From cppreference.net

flat_multiset ( )
: flat_multiset ( key_compare ( ) ) { }
(1) (desde C++23)
template < class Allocator >
flat_multiset ( const flat_multiset & other, const Allocator > alloc ) ;
(2) (desde C++23)
template < class Allocator >
flat_multiset ( flat_multiset && other, const Allocator & alloc ) ;
(3) (desde C++23)
explicit flat_multiset ( container_type cont,
const key_compare & comp = key_compare ( ) ) ;
(4) (desde C++23)
template < class Allocator >
flat_multiset ( const container_type & cont, const Allocator & alloc ) ;
(5) (desde C++23)
template < class Allocator >

flat_multiset ( const container_type & cont, const key_compare & comp,

const Allocator & alloc ) ;
(6) (desde C++23)
flat_multiset ( std:: sorted_equivalent_t s, container_type cont,

const key_compare & comp = key_compare ( ) )

: c ( std :: move ( cont ) ) , compare ( comp ) { }
(7) (desde C++23)
template < class Allocator >

flat_multiset ( std:: sorted_equivalent_t s, const container_type & cont,

const Allocator & alloc ) ;
(8) (desde C++23)
template < class Allocator >

flat_multiset ( std:: sorted_equivalent_t s, const container_type & cont,

const key_compare & comp, const Allocator & alloc ) ;
(9) (desde C++23)
explicit flat_multiset ( const key_compare & comp )
: c ( ) , compare ( comp ) { }
(10) (desde C++23)
template < class Allocator >
flat_multiset ( const key_compare & comp, const Allocator & alloc ) ;
(11) (desde C++23)
template < class Allocator >
explicit flat_multiset ( const Allocator & alloc ) ;
(12) (desde C++23)
template < class InputIter >

flat_multiset ( InputIter first, InputIter last,
const key_compare & comp = key_compare ( ) )

: c ( ) , compare ( comp ) ;
(13) (desde C++23)
template < class InputIter, class Allocator >

flat_multiset ( InputIter first, InputIter last,

const key_compare & comp, const Allocator & alloc ) ;
(14) (desde C++23)
template < class InputIter, class Allocator >
flat_multiset ( InputIter first, InputIter last, const Allocator & alloc ) ;
(15) (desde C++23)
template < container-compatible-range < value_type > R >

flat_multiset ( std:: from_range_t , R && rg, const key_compare & comp )

: flat_multiset ( comp ) ;
(16) (desde C++23)
template < container-compatible-range < value_type > R >

flat_multiset ( std:: from_range_t fr, R && rg )

: flat_multiset ( fr, std:: forward < R > ( rg ) , key_compare ( ) ) { }
(17) (desde C++23)
template < container-compatible-range < value_type > R, class Allocator >
flat_multiset ( std:: from_range_t , R && rg, const Allocator & alloc ) ;
(18) (desde C++23)
template < container-compatible-range < value_type > R, class Allocator >

flat_multiset ( std:: from_range_t , R && rg, const key_compare & comp,

const Allocator & alloc ) ;
(19) (desde C++23)
template < class InputIter >

flat_multiset ( std:: sorted_equivalent_t s, InputIter first, InputIter last,
const key_compare & comp = key_compare ( ) )

: c ( first, last ) , compare ( comp ) { }
(20) (desde C++23)
template < class InputIter, class Allocator >

flat_multiset ( std:: sorted_equivalent_t s, InputIter first, InputIter last,

const key_compare & comp, const Allocator & alloc ) ;
(21) (desde C++23)
template < class InputIter, class Allocator >

flat_multiset ( std:: sorted_equivalent_t s, InputIter first, InputIter last,

const Allocator & alloc ) ;
(22) (desde C++23)
flat_multiset ( std:: initializer_list < value_type > init,

const key_compare & comp = key_compare ( ) )

: flat_multiset ( init. begin ( ) , init. end ( ) , comp ) { }
(23) (desde C++23)
template < class Allocator >

flat_multiset ( std:: initializer_list < value_type > init, const key_compare & comp,

const Allocator & alloc ) ;
(24) (desde C++23)
template < class Allocator >
flat_multiset ( std:: initializer_list < value_type > init, const Allocator & alloc ) ;
(25) (desde C++23)
flat_multiset ( std:: sorted_equivalent_t s, std:: initializer_list < value_type > init,

const key_compare & comp = key_compare ( ) )

: flat_multiset ( s, init. begin ( ) , init. end ( ) , comp ) { }
(26) (desde C++23)
template < class Allocator >

flat_multiset ( std:: sorted_equivalent_t s, std:: initializer_list < value_type > init,

const key_compare & comp, const Allocator & alloc ) ;
(27) (desde C++23)
template < class Allocator >

flat_multiset ( std:: sorted_equivalent_t s, std:: initializer_list < value_type > init,

const Allocator & alloc ) ;
(28) (desde C++23)

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

1) Un constructor predeterminado. Construye un adaptador de contenedor vacío.
2) Un copy constructor . Construye c con la copia de los contenidos de other. c y compare con other. compare . Consulte la nota de uso del allocator a continuación.
3) Un move constructor . Construye el adaptador de contenedor con los contenidos de other usando semántica de movimiento. Consulte la nota de uso del 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) , equivalente a flat_multiset ( cont ) ; . Consulte la nota de uso del asignador a continuación.
6) Igual que (4) , equivalente a flat_multiset ( cont, comp ) ; . Consulte la nota de uso del 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_multiset ( s, cont ) ; . Consulte la nota de uso del asignador a continuación.
9) Igual que (7) , equivalente a flat_multiset ( s, cont, comp ) ; . Consulte la nota de uso del asignador a continuación.
10) Construye un adaptador de contenedor vacío.
11,12) Construye un adaptador de contenedor vacío. Consulte la nota de uso del asignador a continuación.
13) Construye el adaptador de contenedor con los contenidos del rango [ first , last ) , equivalente a insert ( first, last ) ; .
14,15) Igual que (13) . Consulte la nota de uso del asignador a continuación.
16) Construye el adaptador de contenedor con los contenidos del rango rg . Primero, utiliza (10) como constructor delegado . Luego inicializa c con los contenidos de rg como si fuera mediante insert_range ( std:: forward < R > ( rg ) ) ; .
17) Igual que (16) usándolo como delegating constructor .
18,19) Igual que (16) . Consulte la nota de uso del asignador a continuación.
20) Construye el contenedor subyacente con el contenido del rango [ first , last ) . Inicializa c con c ( first, last ) y compare con compare ( comp ) .
21,22) Igual que (20) . Consulte la nota de uso del asignador a continuación.
23) Un constructor de lista de inicialización . Construye el contenedor subyacente con el contenido de la lista de inicialización init , usando (13) como constructor delegado .
24,25) Igual que (23) . Consulte la nota de uso del asignador a continuación.
26) Un constructor de lista de inicialización . Construye el contenedor subyacente con el contenido de la lista de inicialización init , usando (20) como constructor delegado .
27,28) Guardar como (26) . Ver nota de uso del asignador abajo.

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

Contenidos

Nota de uso del 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 sin asignador excepto que c se construye con construcción uses-allocator . Estas sobrecargas participan en la resolución de sobrecarga 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_multiset 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 define el rango fuente de elementos a copiar
init - una lista de inicialización para inicializar los elementos del contenedor subyacente
rg - un rango compatible con contenedor (es decir, un input_range cuyos elementos son convertibles 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 por 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 cumplir con los requisitos de LegacyInputIterator .
-
Compare debe cumplir con los requisitos de Compare .
-
Allocator debe cumplir con los requisitos de Allocator .

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 el 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 el tamaño de cont .
10-12) Constante.
13-15) Lineal en N si el rango de entrada [ first , last ) 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 el tamaño de [ first , last ) .
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 el tamaño de init .

Excepciones

Las llamadas a Allocator::allocate pueden lanzar excepciones.

Notas

Después de la construcción por movimiento del contenedor (sobrecarga ( 3 ) ), las referencias, punteros e iteradores (excepto el iterador end) a other permanecen válidos, pero refieren a elementos que ahora están en * this . El estándar actual garantiza esto mediante la declaración general en [container.reqmts]/67 , y se está considerando una garantía más directa a través de LWG issue 2321 .

Ejemplo

Véase también

asigna valores al adaptador de contenedor
(función miembro pública)