• Class / Function / Type

      std::
    • Header file

      <>
    • Other / All

    最終更新日時(UTC):
    が更新

    履歴 編集

    function
    <mdspan>

    std::layout_stride::mapping::required_span_size

    constexpr index_type required_span_size() const noexcept;
    

    概要

    メモリブロックに対する要素アクセス範囲を取得する。

    説明用の関数REQUIRED-SPAN-SIZE(e, strides)を次のように定義する

    • e.rank() == 0のとき値1
    • そうでなければ、多次元インデクス空間eのサイズが0のとき値0
    • そうでなければ、半開区間[0, e.rank())の全てのrに対して(e.extent(r) - 1)extents_type::index-cast(strides_[r])を乗じた値の総和に1を加算した値

    戻り値

    説明専用のメンバ変数extents_, strides_に対して、REQUIRED-SPAN-SIZE(extents_, strides_)を返す。

    例外

    投げない

    #include <cassert>
    #include <array>
    #include <mdspan>
    
    int main()
    {
      using Ext2x3 = std::extents<size_t, 2, 3>;
      using Mapping = std::layout_stride::mapping<Ext2x3>;
    
      Mapping map1{{}, std::array{4, 1}};
      assert(map1.required_span_size() == 7);
      // map1(i,j):
      // i/j ->
      // |  1 2 3 (4)
      // V  5 6 7  -
    
      Mapping map2{{}, std::array{2, 3}};
      assert(map2.required_span_size() == 9);
      // map2(i,j):
      // i/j ->
      // |   1   4   7
      // V  (2) (5) (8)
      //     3   6   9
    }
    

    出力

    バージョン

    言語

    • C++23

    処理系

    参照