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

履歴 編集

class template
<mdspan>

std::layout_left::mapping(C++23)

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

概要

layout_left::mapping<E>は、extents型の多次元配列サイズEをパラメータとして、Fortran/Matlab多次元配列と互換性のある列優先(column major)レイアウトマッピングを表現するクラスである。

layout_left::mapping<E>トリビアルコピー可能であり、regularのモデルである。

説明専用メンバ変数

layout_left::mappingクラステンプレートは、下記の説明専用メンバ変数を保持する。

適格要件

  • Extentsextentsの特殊化であること。
  • Extents::rank_dynamic() == 0trueのとき、多次元インデクス空間Extents()のサイズがExtents::index_type型で表現できること。

メンバ関数

構築・破棄

名前 説明 対応バージョン
(constructor) コンストラクタ C++23
(destructor) デストラクタ C++23
operator= コピー代入演算子 C++23

観測

名前 説明 対応バージョン
extents 多次元配列のサイズextents_を取得する C++23
required_span_size 要素アクセス範囲を取得する C++23
operator() 多次元配列インデクスから要素位置へ変換する C++23
stride 指定次元のストライド幅を取得する C++23

静的メンバ関数

名前 説明 対応バージョン
is_always_unique trueを返す C++23
is_always_exhaustive trueを返す C++23
is_always_strided trueを返す C++23
is_unique trueを返す C++23
is_exhaustive trueを返す C++23
is_strided trueを返す C++23

メンバ型

名前 説明 対応バージョン
extents_type Extents C++23
index_type Extents::index_type C++23
size_type Extents::size_type C++23
rank_type Extents::rank_type C++23
layout_type layout_left C++23

非メンバ(Hidden friends)関数

名前 説明 対応バージョン
submdspan_mapping submdspanサポート C++26

比較演算子

名前 説明 対応バージョン
operator== 等値比較 C++23
operator!= 非等値比較 (==により使用可能) 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>;
  using Mapping = std::layout_left::mapping<Ext2x3>;
  std::mdspan 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 3 5
2 4 6

バージョン

言語

  • C++23

処理系

関連項目

参照