Namespaces
Variants

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

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

Adjunta copias de los elementos iniciales en rg antes de end(), hasta que todos los elementos se hayan insertado o se agote el almacenamiento interno (es decir, size() == capacity() es true).

Todos los iteradores y referencias permanecen válidos. El iterador end() se invalida.

Cada iterador en rg se desreferencia como máximo una vez.

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

Prueba de características macro Valor Estándar Característica
__cpp_lib_inplace_vector 202603L (C++26) Eliminado try_append_range

Ejemplo

#include <cassert>
#include <initializer_list>
#include <inplace_vector>

int main()
{
#if defined(__cpp_lib_inplace_vector) and (__cpp_lib_inplace_vector < 202603L)
    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);
#endif
}

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)