Namespaces
Variants

std::vector<T,Allocator>::assign_range

De es.cppreference.net

 
 
 
 
template< /*container-compatible-range*/<T> R >
constexpr void assign_range( R&& rg );
(desde C++23)

Reemplaza los elementos en el contenedor con una copia de cada elemento en rg.

Todos los iteradores (incluyendo el iterador end()) y todas las referencias a los elementos son invalidados.

Cada iterador en el rango rg es desreferenciado exactamente una vez.

El comportamiento es indefinido si rg se superpone con el contenedor.

Parámetros

rg - un input_range cuyo tipo de referencia es convertible al tipo de elemento del contenedor
Requisitos de tipo
-
Si std:: assignable_from < T & , ranges:: range_reference_t < R >> no se cumple, el programa está mal formado.
-
Si T no es EmplaceConstructible en vector desde * ranges:: begin ( rg ) , el comportamiento es indefinido.
-
Si se satisface alguna de las siguientes condiciones, y T no es MoveInsertable en vector , el comportamiento es indefinido:
(hasta C++26)
(desde C++26)

Notas

Macro de prueba de características Valor Std Característica
__cpp_lib_containers_ranges 202202L (C++23) Construcción e inserción compatibles con rangos

Ejemplo

#include <algorithm>
#include <cassert>
#include <vector>
#include <list>
int main()
{
    const auto source = std::list{2, 7, 1};
    auto destination = std::vector{3, 1, 4};
#ifdef __cpp_lib_containers_ranges
    destination.assign_range(source);
#else
    destination.assign(source.cbegin(), source.cend());
#endif
    assert(std::ranges::equal(source, destination));
}

Véase también

inserta un rango de elementos
(función miembro pública)
añade un rango de elementos al final
(función miembro pública)
asigna valores al contenedor
(función miembro pública)
asigna valores al contenedor
(función miembro pública)