Namespaces
Variants

std::inplace_vector<T,N>::assign_range

De es.cppreference.net

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

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

Cada iterador en el rango rg se desreferencia exactamente una vez.

El comportamiento no está definido 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 inplace_vector desde * ranges:: begin ( rg ) , el comportamiento es indefinido.

Excepciones

Ejemplo

#include <algorithm>
#include <cassert>
#include <initializer_list>
#include <inplace_vector>
#include <iostream>
#include <new>
int main()
{
    const auto source = {1, 2, 3};
    std::inplace_vector<int, 4> destination{4, 5};
    destination.assign_range(source);
    assert(std::ranges::equal(destination, source));
    try
    {
        const auto bad = {-1, -2, -3, -4, -5};
        destination.assign_range(bad); // lanza excepción: bad.size() > destination.capacity()
    }
    catch(const std::bad_alloc& ex)
    {
        std::cout << ex.what() << '\n';
    }
}

Salida posible:

std::bad_alloc

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)