std::queue<T,Container>:: push_range
|
template
<
container-compatible-range
<
value_type
>
R
>
void push_range ( R && rg ) ; |
(начиная с C++23) | |
Вставляет копию каждого элемента из
rg
в
queue
, как если бы:
-
c.
append_range
(
std::
forward
<
R
>
(
rg
)
)
если это допустимое выражение (т.е. базовый контейнер
c
имеет соответствующую функцию-член
append_range), или - ranges:: copy ( rg, std:: back_inserter ( c ) ) в противном случае.
Каждый итератор в диапазоне
rg
разыменовывается ровно один раз.
Содержание |
Параметры
| rg | - |
a
container compatible range
, that is, an
input_range
whose elements are convertible to
T
|
Сложность
Идентично сложности c. append_range или ranges:: copy ( rg, std:: back_inserter ( c ) ) (в зависимости от того, какая функция используется внутренне).
Примечания
| Макрос тестирования возможностей | Значение | Стандарт | Возможность |
|---|---|---|---|
__cpp_lib_containers_ranges
|
202202L
|
(C++23) | Ranges-aware конструирование и вставка |
Пример
#include <initializer_list> #include <queue> #include <version> #ifdef __cpp_lib_format_ranges #include <print> using std::println; #else #define FMT_HEADER_ONLY #include <fmt/ranges.h> using fmt::println; #endif int main() { std::queue<int> adaptor; const auto rg = {1, 3, 2, 4}; #ifdef __cpp_lib_containers_ranges adaptor.push_range(rg); #else for (int e : rg) adaptor.push(e); #endif println("{}", adaptor); }
Вывод:
[1, 3, 2, 4]
Смотрите также
|
вставляет элемент в конец
(публичная функция-член) |