std::inplace_vector<T,N>::try_append_range
template< container-compatible-range<T> R >
constexpr std::ranges::borrowed_iterator_t<R> try_append_range( R&& rg );
|
(desde C++26) (eliminado en C++26) |
|
Adjunta copias de los elementos iniciales en rg antes de end(), hasta que todos los elementos se hayan insertado o se agote el almacenamiento interno (es decir, size() == capacity() es true).
Todos los iteradores y referencias permanecen válidos. El iterador end() se invalida.
Cada iterador en rg se desreferencia como máximo una vez.
Parámetros
| rg | - |
un
rango compatible con contenedor
, es decir, un
input_range
cuyos elementos son convertibles a
T
|
| Requisitos de tipo | ||
-
T
debe ser
EmplaceConstructible
en
inplace_vector
desde
*
ranges::
begin
(
rg
)
. De lo contrario, el comportamiento es indefinido.
|
||
Valor de retorno
Un iterador que apunta al primer elemento de rg que no fue insertado en * this , o ranges:: end ( rg ) si no existe tal elemento.
Complejidad
Lineal en el número de elementos insertados.
Excepciones
Cualquier excepción lanzada por la inicialización del elemento insertado.
inplace_vector
proporciona la
garantía básica de seguridad ante excepciones
, es decir, se preservan todos los elementos del contenedor anteriores a la llamada, y también se preservan todos los elementos ya insertados (antes de la excepción, si la hubiera).
Notas
| Esta sección está incompleta Razón: Explicar el propósito de esta API. |
| Prueba de características macro | Valor | Estándar | Característica |
|---|---|---|---|
__cpp_lib_inplace_vector |
202603L |
(C++26) | Eliminado try_append_range
|
Ejemplo
#include <cassert>
#include <initializer_list>
#include <inplace_vector>
int main()
{
#if defined(__cpp_lib_inplace_vector) and (__cpp_lib_inplace_vector < 202603L)
using I = std::inplace_vector<int, 8>;
auto nums = I{1, 2, 3};
const auto rg = {-1, -2, -3};
auto it = nums.try_append_range(rg);
assert(nums.size() == 6);
assert((nums == I{1, 2, 3, -1, -2, -3}));
assert(it == rg.end());
it = nums.try_append_range(rg);
assert(nums.size() == 8);
assert((nums == I{1, 2, 3, -1, -2, -3, -1, -2}));
assert(it == rg.begin() + 2);
#endif
}
Véase también
|
añade un rango de elementos al final
(función miembro pública) |
|
|
añade un elemento al final
(función miembro pública) |
|
|
intenta añadir un elemento al final
(función miembro pública) |
|
|
añade incondicionalmente un elemento al final
(función miembro pública) |
|
|
construye un elemento in-situ al final
(función miembro pública) |
|
|
intenta construir un elemento in-situ al final
(función miembro pública) |
|
|
construye incondicionalmente un elemento in-situ al final
(función miembro pública) |
|
|
elimina el último elemento
(función miembro pública) |
|
|
crea un
std::back_insert_iterator
del tipo inferido del argumento
(plantilla de función) |