Namespaces
Variants

std::list<T,Allocator>:: append_range

From cppreference.net

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

Inserta copias de elementos del rango rg antes de end() , en orden no inverso.

No se invalidan iteradores ni referencias.

Cada iterador en rg es desreferenciado exactamente una vez.

Contenidos

Parámetros

rg - un rango compatible con contenedor , es decir, un input_range cuyos elementos son convertibles a T
Requisitos de tipo
-
Si T no es EmplaceConstructible en list desde * ranges:: begin ( rg ) , el comportamiento es indefinido.

Complejidad

Lineal en tamaño de rg . El número de llamadas al constructor de T es exactamente igual al std :: ranges:: size ( rg ) ) .

Excepciones

Si se lanza una excepción por cualquier razón, esta función no tiene efecto ( strong exception safety guarantee ).

Notas

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

Ejemplo

#include <cassert>
#include <list>
#include <vector>
int main()
{
    auto head = std::list{1, 2, 3, 4};
    const auto tail = std::vector{-5, -6, -7};
#ifdef __cpp_lib_containers_ranges
    head.append_range(tail);
#else
    head.insert(head.end(), tail.cbegin(), tail.cend());
#endif
    assert((head == std::list{1, 2, 3, 4, -5, -6, -7}));
}

Véase también

agrega un rango de elementos al principio
(función miembro pública)
inserta un rango de elementos
(función miembro pública)
agrega un elemento al final
(función miembro pública)
construye un elemento en el lugar al final
(función miembro pública)