std::extents, std::dextents, std::dims
來自 cppreference.com
定義於標頭檔案 <mdspan> |
||
template< class IndexType, std::size_t... Extents > class extents; |
(1) | (C++23 起) |
template< class IndexType, std::size_t Rank > using dextents = /* see below */ |
(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) 一個方便的別名模板,用於全動態的
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 |
[編輯] 資料成員
成員名稱 (Member name) | 定義 |
std::array<index_type, rank_dynamic()> dynamic-extents (private) |
一個儲存每個動態範圍大小的陣列。 (僅用於闡釋的成員物件*) |
[編輯] 成員函式
構造一個 extents (公共成員函式) | |
觀察器 | |
[靜態] |
返回 extents 的靜態秩(公共靜態成員函式) |
[靜態] |
返回 extents 的動態秩(公共靜態成員函式) |
[靜態] |
返回特定等級索引處 extents 的靜態範圍大小(公共靜態成員函式) |
返回 extents 在特定秩索引處的動態範圍大小(公共成員函式) | |
輔助函式 | |
返回範圍 [ 0, i) 內的範圍大小的乘積(僅用於說明的成員函式*) | |
返回範圍 [ i + 1, rank()) 內的範圍大小的乘積(僅用於說明的成員函式*) | |
將輸入轉換為整數型別 (僅用於說明的成員函式*) | |
(私有) |
返回某個秩索引以下動態範圍的數量 (僅用於說明的成員函式*) |
返回數字 r ,使得對於某個引數 i ,範圍 [ 0, r + 1) 中恰好有 i + 1 個動態範圍(僅用於說明的成員函式*) |
[編輯] 非成員函式
(C++23) |
比較兩個 extents 在每個維度上的底層範圍(函式) |
[編輯] 推導指南(C++23)
[編輯] 示例
本節不完整 原因:無示例 |
[編輯] 另見
(C++11) |
獲取陣列型別的維數 (類模板) |
(C++11) |
獲取陣列型別在指定維度上的大小 (類模板) |