最終更新日時: 2026年05月02日 11時17分44秒 (JST)
Raclamusi が更新

履歴 編集

<mdspan>

# mdspan(C++23)

`<mdspan>`ヘッダでは、任意のメモリブロックに対して多次元配列のようにアクセスする機能を定義する。

## 多次元配列サイズ

名前 | 説明 | 対応バージョン
--- | --- | ---
`extents` | 多次元配列のサイズを表す値 (class template) | C++23
`dextents` | 全次元が動的な多次元配列のサイズを表す値 (alias template) | C++23
`dims` | 全次元が動的な多次元配列のサイズを表す値 (alias template) | C++26

## レイアウトマッピング

名前 | 説明 | 対応バージョン
--- | --- | ---
`layout_left` | 列優先(Fortran/Matlabスタイル)レイアウトマッピングポリシー (class) | C++23
`layout_right` | 行優先(C/C++スタイル)レイアウトマッピングポリシー (class) | C++23
`layout_stride` | ストライド幅指定レイアウトマッピングポリシー (class) | C++23
`layout_left_padded` | パディングあり列優先レイアウトマッピングポリシー (class template) | C++26
`layout_right_padded` | パディングあり行優先レイアウトマッピングポリシー (class template) | C++26

## 要素アクセサ

名前 | 説明 | 対応バージョン
--- | --- | ---
`default_accessor` | デフォルト要素アクセサ (class template) | C++23
`aligned_accessor` | アライメント保証付き要素アクセサ (class template) | C++26

## 多次元配列ビュー

名前 | 説明 | 対応バージョン
--- | --- | ---
`mdspan` | 多次元配列ビュー (class template) | C++23

## 多次元配列部分ビュー

名前 | 説明 | 対応バージョン
--- | --- | ---
`strided_slice` | 指定次元のストライド指定要素取り出しを指示する集成体クラステンプレート (class template) | C++26
`full_extent_t` | 指定次元の全要素取り出しを指示するタグ型 (class) | C++26
`full_extent` | 指定次元の全要素取り出しを指示するタグ値 (variable) | C++26
`submdspan_mapping_result` | 多次元配列部分ビューのレイアウトマッピング情報 (class template) | C++26
`submdspan_extents` | 多次元配列部分ビューの多次元配列サイズを計算する (function template) | C++26
`submdspan_canonicalize_slices` | 多次元配列部分ビュー取得時の多次元インデクスを正規化する (function template) | C++26
`submdspan` | 多次元配列部分ビューを取得する (function template) | C++26

## バージョン

### 言語

- C++23

## 関連項目

- C++20 `<span>`
- C++26 `<linalg>`

## 参照

- P0009R18 MDSPAN
- P2630R4 Submdspan
- P2642R6 Padded mdspan layouts
- P2897R7 `aligned_accessor`: An mdspan accessor expressing pointer over-alignment
- P3663R3 Future-proof `submdspan_mapping`