std::extents, std::dextents, std::dims
From cppreference.com
| ヘッダー <mdspan> で定義 |
||
| template< class IndexType, std::size_t... Extents > class extents; |
(1) | (C++23から) |
| template< class IndexType, std::size_t Rank > using dextents = /* 以下参照 */ |
(2) | (C++23から) |
| template< std::size_t Rank, class IndexType = std::size_t > using dims = std::dextents<IndexType, Rank>; |
(3) | (C++26以降) |
1) ランクが sizeof...(Extents) に等しい多次元インデックス空間を表します。
2) 全て動的 (all-dynamic) な
extents の便利なエイリアステンプレートです。d を std::dynamic_extent とすると、dextents<IndexType, Rank> の各特殊化は extents<IndexType /*, d, d, ..., d*/> (すなわち、d が合計 Rank 回繰り返される) と等価です。extents の各特殊化は regular をモデル化し、TriviallyCopyable です。
目次 |
[編集] テンプレートパラメータ
| IndexType | - | 各非動的 Extents の型です。符号付きまたは符号なし整数型である必要があります。それ以外の場合、プログラムは形式エラーとなります。 |
| Extents | - | 各ランクインデックスの範囲 (整数区間のサイズ) を表します。各要素は、std::dynamic_extent (この場合、*動的範囲* を表し、範囲サイズは動的に決定されます) に等しいか、IndexType の値として表現可能である (この場合、*静的範囲* を表し、範囲サイズはその値になります) か、それ以外の場合はプログラムは形式エラーとなります。 |
| Rank | - | 全て動的な extents のランクを示します。 |
[編集] メンバ型
| メンバ型 | 定義 |
index_type
|
IndexType
|
size_type
|
std::make_unsigned_t<index_type> |
rank_type
|
std::size_t |
[編集] データメンバ
| メンバ名 | 定義 |
std::array<index_type, rank_dynamic()> dynamic-extents (private) |
各動的範囲のサイズを格納する配列。 (説明用のメンバオブジェクト*) |
[編集] メンバ関数
extents を構築します。(public member function) | |
監視 | |
| [static] |
extents の静的ランクを返します。(public static member function) |
| [static] |
extents の動的ランクを返します。(public static member function) |
| [static] |
指定されたランクインデックスにおける extents の静的なエクステントサイズを返します(public static member function) |
特定のランクインデックスにおける extents の動的なエクステントサイズを返します。(public member function) | |
ヘルパー | |
[0, i) の範囲の範囲サイズの積を返します。(exposition-only member function*) | |
[i + 1, rank()) の範囲の範囲サイズの積を返します。(exposition-only member function*) | |
| 入力を整数型にキャストします。 (exposition-only member function*) | |
| (private) |
指定されたランクインデックスより下にある動的範囲の数を返します。 (exposition-only member function*) |
| (private) |
指定された引数 i に対して、範囲 [0, r + 1) 内にちょうど i + 1 個の動的範囲があるような r を返します。(exposition-only member function*) |
[編集] 非メンバ関数
| (C++23) |
2つの extents の各次元における基となる範囲を比較します。(function) |
[編集] 推論ガイド(C++23)
[編集] 例
| このセクションは未完成です 理由: 例がありません |
[編集] 関連項目
| (C++11) |
配列型の次元数を取得する (クラステンプレート) |
| (C++11) |
指定された次元に沿った配列型のサイズを取得する (クラステンプレート) |