Namespaces
Variants

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

From cppreference.net
template < container-compatible-range < T > R >
constexpr std :: ranges:: borrowed_iterator_t < R > try_append_range ( R && rg ) ;
(desde C++26)

Añade copias de los elementos iniciales en rg antes de end() , hasta que todos los elementos sean insertados o se agote el almacenamiento interno (es decir, size ( ) == capacity ( ) sea true ).

Todos los iteradores y referencias permanecen válidos. El end() iterador queda invalidado.

Cada iterador en rg es desreferenciado como máximo 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
-
T debe ser EmplaceConstructible en inplace_vector desde * ranges:: begin ( rg ) . De lo contrario, el comportamiento es indefinido.

Valor de retorno

Un iterador que apunta al primer elemento de rg que no fue insertado en * this , o ranges:: end ( rg ) si no existe tal elemento.

Complejidad

Lineal en el número de elementos insertados.

Excepciones

Cualquier excepción lanzada por la inicialización del elemento insertado.

inplace_vector proporciona la garantía básica de seguridad ante excepciones , es decir, se preservan todos los elementos del contenedor anteriores a la llamada, y también se preservan todos los elementos ya insertados (antes de la excepción, si la hubiera).

Notas

Ejemplo

#include <cassert>
#include <initializer_list>
#include <inplace_vector>
int main()
{
    using I = std::inplace_vector<int, 8>;
    auto nums = I{1, 2, 3};
    const auto rg = {-1, -2, -3};
    auto it = nums.try_append_range(rg);
    assert(nums.size() == 6);
    assert((nums == I{1, 2, 3, -1, -2, -3}));
    assert(it == rg.end());
    it = nums.try_append_range(rg);
    assert(nums.size() == 8);
    assert((nums == I{1, 2, 3, -1, -2, -3, -1, -2}));
    assert(it == rg.begin() + 2);
}

Véase también

añade un rango de elementos al final
(función miembro pública)
añade un elemento al final
(función miembro pública)
intenta añadir un elemento al final
(función miembro pública)
añade incondicionalmente un elemento al final
(función miembro pública)
construye un elemento in-situ al final
(función miembro pública)
intenta construir un elemento in-situ al final
(función miembro pública)
construye incondicionalmente un elemento in-situ al final
(función miembro pública)
elimina el último elemento
(función miembro pública)
crea un std::back_insert_iterator del tipo inferido del argumento
(plantilla de función)