• Class / Function / Type

      std::
    • Header file

      <>
    • Other / All

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

    履歴 編集

    class
    <mdspan>

    std::layout_left

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

    概要

    layout_leftは、多次元配列ビューmdspanに対して、FortranやMatlab多次元配列と互換性のある列優先(column major)レイアウトマッピングを表現するポリシークラスである。

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

    ポリシークラス名の由来は、多次元インデクスのうち最左次元が隣接配置(ストライド幅=1)され、インデクス次元の左から右の順にストライド幅が増大するところから来ている。

    メンバ型

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

    #include <mdspan>
    #include <iostream>
    
    int main()
    {
      double arr[] = {1, 2, 3, 4, 5, 6};
    
      // 要素数2x3の2次元配列/列優先レイアウト
      using Ext2x3 = std::extents<size_t, 2, 3>;
      std::mdspan<double, Ext2x3, std::layout_left> mat{arr};
    
      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 3 5
    2 4 6
    

    バージョン

    言語

    • C++23

    処理系

    関連項目

    参照