• Class / Function / Type

      std::
    • Header file

      <>
    • Other / All

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

    履歴 編集

    class
    <mdspan>

    std::layout_stride

    namespace std {
      struct layout_stride {
        template<class Extents>
        class mapping;
      };
    }
    

    概要

    layout_strideは、多次元配列ビューmdspanに対して、次元毎に任意ストライド幅を指定したレイアウトマッピングを表現するポリシークラスである。

    layout_strideは、レイアウトマッピングポリシー要件を満たすトリビアル型である。

    メンバ型

    名前 説明 対応バージョン
    mapping レイアウトマッピング C++23

    #include <array>
    #include <mdspan>
    #include <iostream>
    
    int main()
    {
      double arr[] = {1, 2, 3, 0, 4, 5, 6, 0};
    
      // 要素数2x3の2次元配列/行優先かつパディングありレイアウト
      using Ext2x3 = std::extents<size_t, 2, 3>;
      std::array<int, 2> strides{4, 1};
      std::layout_stride::mapping<Ext2x3> mapping{{}, strides};
      std::mdspan<double, Ext2x3, std::layout_stride> mat{arr, mapping};
    
      for (size_t i = 0; i < mat.extent(0); ++i) {
        for (size_t j = 0; j < mat.extent(1); ++j) {
          std::cout << (j ? " " : "") << mat[i, j];
        }
        std::cout << "\n";
      }
    }
    

    出力

    1 2 3
    4 5 6
    

    バージョン

    言語

    • C++23

    処理系

    関連項目

    参照