Namespaces
Variants

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

From 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 es desreferenciado exactamente una vez.

Si rg se superpone con * this , el comportamiento es indefinido.

Contenidos

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)