std::inplace_vector<T,N>::insert
De es.cppreference.net
constexpr iterator insert( const_iterator pos, const T& value );
|
(1) | (since C++26) |
constexpr iterator insert( const_iterator pos, T&& value );
|
(2) | (since C++26) |
constexpr iterator insert( const_iterator pos, size_type count, const T& value );
|
(3) | (since C++26) |
template< class InputIt >
constexpr iterator insert( const_iterator pos, InputIt first, InputIt last );
|
(4) | (since C++26) |
constexpr iterator insert( const_iterator pos, std::initializer_list<T> ilist );
|
(5) | (since C++26) |
Inserta elementos en la ubicación especificada del contenedor.
1) Inserta una copia de
value antes de pos.2) Inserta
value antes de pos, posiblemente usando semántica de movimiento.3) Inserta
count copias de value antes de pos.4) Inserta elementos del rango
[first, last) antes de pos.
Esta sobrecarga participa en la resolución de sobrecarga solo si InputIt es LegacyInputIterator (para evitar ambigüedad con la sobrecarga (3)). Cada iterador en
[first, last) se desreferencia una vez. Si
first y last son iteradores a *this, el comportamiento no está definido.5) Inserta elementos de la lista de inicialización
ilist antes de pos. Equivalente a: insert(pos, ilist.begin(), ilist.end());.| Esta sección está incompleta |
Parámetros
| pos | - |
iterador antes del cual se insertará el contenido (
pos
puede ser el
end()
iterator)
|
| value | - | valor del elemento a insertar |
| count | - | número de elementos a insertar |
| first, last | - | el par de iteradores que define el rango fuente de elementos a insertar |
| ilist | - | std::initializer_list desde el cual insertar los valores |
| Requisitos de tipo | ||
-
T
debe cumplir con los requisitos de
CopyInsertable
para usar la sobrecarga (1).
|
||
-
T
debe cumplir con los requisitos de
MoveInsertable
para usar la sobrecarga (2).
|
||
-
T
debe cumplir con los requisitos de
CopyAssignable
y
CopyInsertable
para usar la sobrecarga (3).
|
||
-
T
debe cumplir con los requisitos de
EmplaceConstructible
para usar las sobrecargas (4,5).
|
||
Valor de retorno
1,2)
Iterador que apunta al valor insertado
value
.
3)
Iterador que apunta al primer elemento insertado, o
pos
si
count
==
0
.
4)
Iterador que apunta al primer elemento insertado, o
pos
si
first
==
last
.
5)
Iterador que apunta al primer elemento insertado, o
pos
si
ilist
está vacío.
Complejidad
Lineal en el número de elementos insertados más la distancia entre
pos
y
end()
del contenedor.
Excepciones
- Lanza std::bad_alloc si antes de la invocación size ( ) == capacity ( ) . La función no tiene efectos ( garantía de seguridad de excepciones fuerte ).
-
Cualquier excepción lanzada por la inicialización del elemento insertado o por cualquier operación de
LegacyInputIterator
. Los elementos en
[ 0 ,pos)no se modifican.
Ejemplo
Ejecutar este código
#include <initializer_list> #include <inplace_vector> #include <iterator> #include <new> #include <print> int main() { std::inplace_vector<int, 14> v(3, 100); std::println("1. {}", v); auto pos = v.begin(); pos = v.insert(pos, 200); // overload (1) std::println("2. {}", v); v.insert(pos, 2, 300); // overload (3) std::println("3. {}", v); int arr[] = {501, 502, 503}; v.insert(v.begin(), arr, arr + std::size(arr)); // overload (4) std::println("4. {}", v); v.insert(v.end(), {601, 602, 603}); // overload (5) std::println("5. {}", v); const auto list = {-13, -12, -11}; try { v.insert(v.begin(), list); // throws: no space } catch(const std::bad_alloc&) { std::println("bad_alloc: v.capacity()={} < v.size()={} + list.size()={}", v.capacity(), v.size(), list.size()); } }
Salida:
1. [100, 100, 100] 2. [200, 100, 100, 100] 3. [300, 300, 200, 100, 100, 100] 4. [501, 502, 503, 300, 300, 200, 100, 100, 100] 5. [501, 502, 503, 300, 300, 200, 100, 100, 100, 601, 602, 603] bad_alloc: v.capacity()=14 < v.size()=12 + list.size()=3
Véase también
|
construye el elemento in situ
(función miembro pública) |
|
|
inserta un rango de elementos
(función miembro pública) |