Espacios de nombres
Variantes
Acciones

std::stack<T,Container>::push_range

De cppreference.com
< cpp‎ | container‎ | stack
 
 
 
 
template<container-compatible-range<value_type> R >
void push_range( R&& rg );
(desde C++23)

Inserta una copia de cada elemento de rg en stack, como si fuera por:

  • c.append_range(std::forward<R>(rg)) si esa es una expresión válida (es decir, el contenedor subyacente c tiene una función miembro append_range apropiada), o
  • ranges::copy(rg, std::back_inserter(c)) en caso contrario.


Cada iterador en el rango rg se desreferencia exactamente una vez.


Contenido

[editar]Parámetros

rg - Un contenedor compatible con rangos, es decir, un input_range cuyos elementos se pueden convertir a T.

[editar]Valor de retorno

(Ninguno)

[editar]Complejidad

Idéntica a la complejidad de c.append_range o ranges::copy(rg, std::back_inserter(c)) (según la función que se utilice internamente).

[editar]Notas

Macro de Prueba de característicaValorEstándarComentario
__cpp_lib_containers_ranges202202L(C++23)Construcción e inserción consciente de rangos.

[editar]Ejemplo

#include <algorithm>#include <iostream>#include <ranges>#include <...>   template<typename Adaptor> requires (std::ranges::input_range<typename Adaptor::container_type>)void println(auto, const Adaptor& adaptor){struct Container : Adaptor // obtiene acceso al Adaptor::Container c protegido;{autoconst& container()const{return this->c;}};   for(autoconst& elem :static_cast<const Container&>(adaptor).container())std::cout<< elem <<' ';std::cout<<'\n';}   int main(){std::stack<int> adaptor;constauto rg ={1, 3, 2, 4};   #ifdef __cpp_lib_containers_ranges adaptor.push_range(rg);#else std::ranges::for_each(rg, [&adaptor](auto e){ adaptor.push(e);});#endif   println("{}", adaptor);}

Salida:

1 3 2 4

[editar]See also

Apila un elemento en la parte superior de la pila.
(función miembro pública)[editar]
close