std::inplace_vector<T,N>:: append_range
|
template
<
container-compatible-range
<
T
>
R
>
constexpr void append_range ( R && rg ) ; |
(desde C++26) | |
Inserta copias de elementos del rango
rg
antes de
end()
, en orden no inverso.
Cada iterador en rg es desreferenciado exactamente una vez.
Contenidos |
Parámetros
| rg | - |
un
rango compatible con contenedor
, es decir, un
input_range
cuyos elementos son convertibles a
T
|
| Requisitos de tipo | ||
-
T
no es
EmplaceConstructible
en
inplace_vector
desde
*
ranges::
begin
(
rg
)
, el comportamiento es indefinido.
|
||
Complejidad
Lineal en tamaño de
rg
. El número de llamadas al constructor de
T
es exactamente igual al
std
::
ranges::
size
(
rg
)
)
.
Excepciones
Lanza
std::bad_alloc
si
std
::
ranges::
size
(
rg
)
>
N
.
Si se lanza una excepción distinta de la del constructor de copia, constructor de movimiento, operador de asignación u operador de asignación de movimiento de
T
o por cualquier operación de
InputIterator
, no hay efectos.
En caso contrario, si se lanza una excepción, entonces
size
(
)
>=
n
y los elementos en el rango
[
0
,
n
)
no se modifican,
donde
n
es el valor de
size()
antes de esta llamada.
Ejemplo
#include <cassert> #include <inplace_vector> #include <iostream> int main() { using I = std::inplace_vector<int, 8>; auto head = I{1, 2, 3, 4}; const auto tail = {-5, -6, -7}; head.append_range(tail); assert(head.size() == 7 and (head == I{1, 2, 3, 4, -5, -6, -7})); try { head.append_range(tail); // lanza excepción: sin espacio } catch(const std::bad_alloc&) { std::cout << "std::bad_alloc\n"; } }
Salida:
std::bad_alloc
Véase también
|
intenta agregar un rango de elementos al final
(función miembro pública) |
|
|
inserta un rango de elementos
(función miembro pública) |
|
|
agrega un elemento al final
(función miembro pública) |
|
|
construye un elemento en el lugar al final
(función miembro pública) |