std::stack<T,Container>::push_range
From cppreference.com
template<container-compatible-range<value_type> R > void push_range( R&& rg ); | (since C++23) | |
Inserts a copy of each element of rg in stack
, as if by:
- c.append_range(std::forward<R>(rg)) if that is a valid expression (i.e. the underlying container c has an appropriate
append_range
member function), or - ranges::copy(rg, std::back_inserter(c)) otherwise.
Each iterator in the range rg is dereferenced exactly once.
Contents |
[edit]Parameters
rg | - | a container compatible range, that is, an input_range whose elements are convertible to T |
[edit]Complexity
Identical to the complexity of c.append_range or ranges::copy(rg, std::back_inserter(c)) (depending on what function is used internally).
[edit]Notes
Feature-test macro | Value | Std | Feature |
---|---|---|---|
__cpp_lib_containers_ranges | 202202L | (C++23) | Ranges-aware construction and insertion |
[edit]Example
Run this code
#include <initializer_list>#include <stack>#include <version>#ifdef __cpp_lib_format_ranges#include <print>usingstd::println;#else#define FMT_HEADER_ONLY#include <fmt/ranges.h>using fmt::println;#endif int main(){std::stack<int> adaptor;constauto rg ={1, 3, 2, 4}; #ifdef __cpp_lib_containers_ranges adaptor.push_range(rg);#elsefor(int e : rg) adaptor.push(e);#endif println("{}", adaptor);}
Output:
[1, 3, 2, 4]
[edit]See also
inserts element at the top (public member function) |