名前空間
変種
操作

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

From cppreference.com
< cpp‎ | コンテナ‎ | stack
 
 
 
 
template< container-compatible-range<value_type> R >
void push_range( R&& rg );
(C++23から)

rg の各要素のコピーを stack に挿入します。あたかも

  • c.append_range(std::forward<R>(rg)) (基底コンテナ c が適切な append_range メンバ関数を持つ場合)のように、または
  • ranges::copy(rg, std::back_inserter(c)) (それ以外の場合)のように挿入されます。


rg の各イテレータはちょうど1回逆参照されます。

目次

[編集] パラメータ

rg - コンテナ互換範囲。つまり、要素が T に変換可能な input_range

[編集] 計算量

c.append_range または ranges::copy(rg, std::back_inserter(c)) (内部的にどちらの関数が使用されるかによる)の計算量と同一です。

[編集] 注釈

機能テストマクロ 規格 機能
__cpp_lib_containers_ranges 202202L (C++23) ranges対応の構築と挿入

[編集]

#include <initializer_list>
#include <stack>
#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::stack<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]

[編集] 関連項目

要素をトップに挿入する
(public member function) [編集]
English 日本語 中文(简体) 中文(繁體)