std::vector<T,Allocator>::append_range
template< rango-compatible-con-contenedores<T> R > constexprvoid append_range( R&& rg ); | (desde C++23) | |
Inserta copias de elementos del rango rg antes de end()
, en orden no inverso.
Cada iterador en rg se desreferencia exactamente una vez.
Contenido |
[editar]Parámetros
rg | - | Un rango compatible con contenedores, es decir, un input_range cuyos elementos son convertibles a T . |
Requisitos de tipo | ||
-T debe ser EmplaceConstructible en vector de *ranges::begin(rg). También, T debe ser MoveInsertable en vector . De lo contrario, el comportamiento no está definido. |
[editar]Valor de retorno
(Ninguno)
[editar]Complejidad
Si ocurre una reasignación, lineal en el número de elementos del vector
resultante; en caso contrario, lineal en el número de elementos insertados más la distancia al end()
.
[editar]Excepciones
Si se lanza una excepción que no sea por el constructor de copia, el constructor de movimiento, el operador de asignación o el operador de asignación de movimiento de T
, o por cualquier operación de un InputIterator
no hay efectos. Si se lanza una excepción al insertar un solo elemento al final y T
es CopyInsertable o std::is_nothrow_move_constructible_v<T>
es true, no hay efectos. De lo contrario, si la excepción se lanza por el constructor de movimiento de un tipo T
que no es CopyInsertable, los efectos no se especifican.
[editar]Notas
Macro de Prueba de característica | Valor | Estándar | Comentario |
---|---|---|---|
__cpp_lib_containers_ranges | 202202L | (C++23) | Construcción e inserción consciente de rangos. |
[editar]Ejemplo
#include <algorithm>#include <cassert>#include <vector>#include <list> int main(){auto head =std::vector{1, 2, 3, 4};constauto tail =std::list{-5, -6, -7};#ifdef __cpp_lib_containers_ranges head.append_range(tail);#else head.insert(head.end(), tail.cbegin(), tail.cend());#endifassert(std::ranges::equal(head, std::vector{1, 2, 3, 4, -5, -6, -7}));}
[editar]Véase también
(C++23) | Inserta un rango de elementos. (función miembro pública) |
Agrega elementos al final. (función miembro pública) | |
(C++11) | Construye un elemento en el sitio al final. (función miembro pública) |