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.
| Esta sección está incompleta |
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 | ||
-
|
||
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
Ejecutar este código
#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) |