Namespaces
Variants

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

De es.cppreference.net

 
 
 
 
template< container-compatible-range<T> R >
constexpr iterator insert_range( const_iterator pos, R&& rg );
(desde C++26)

Inserta, en orden no inverso, copias de los elementos en rg antes de pos.

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

rg no debe superponerse con el contenedor. De lo contrario, el comportamiento es indefinido.

Parámetros

pos - iterador antes del cual se insertará el contenido ( pos puede ser el end() iterator)
rg - un container compatible range , es decir, un input_range cuyos elementos son convertibles a T
Requisitos de tipo
-
Si se satisface cualquiera de las siguientes condiciones, el comportamiento es indefinido:

Valor de retorno

Un iterador al primer elemento insertado en * this , o pos si rg está vacío.

Excepciones

  • std::bad_alloc , si ranges:: distance ( rg ) + size ( ) > capacity ( ) . Los elementos de * this no se modifican.
  • Cualquier excepción lanzada por la inserción (es decir, por el constructor de copia/movimiento, operador de asignación de movimiento/copia de T ) o por cualquier operación de LegacyInputIterator . Los elementos de * this en el rango [ ​ 0 ​ , pos ) no se modifican.

Ejemplo

#include <cassert>
#include <inplace_vector>
#include <iterator>
#include <new>
#include <print>
int main()
{
    auto v = std::inplace_vector<int, 8>{0, 1, 2, 3};
    auto pos = std::next(v.begin(), 2);
    assert(*pos == 2);
    const auto rg = {-1, -2, -3};
    v.insert_range(pos, rg);
    std::println("{}", v);
    try
    {
        assert(v.size() + rg.size() > v.capacity());
        v.insert_range(pos, rg); // throws: no space
    }
    catch(const std::bad_alloc& ex)
    {
        std::println("{}", ex.what());
    }
}

Salida posible:

[0, 1, -1, -2, -3, 2, 3]
std::bad_alloc

Véase también

inserta elementos
(función miembro pública)
añade un rango de elementos al final
(función miembro pública)
intenta añadir un rango de elementos al final
(función miembro pública)