std::inplace_vector<T,N>:: insert_range
|
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 es desreferenciado exactamente una vez.
Si rg se superpone con * this , el comportamiento es indefinido.
Contenidos |
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
#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) |