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 = /* 见下文 */ |
(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*/>(即重复共 Rank
次 d
)。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 |
数据成员
dynamic-extents (私有)
|
std::array<index_type, rank_dynamic()> 类型的数组,它存储各个动态尺度的大小。 (仅用于阐述的成员对象*) |
成员函数
构造 extents (公开成员函数) | |
观察器 | |
[静态] |
返回 extents 的静态秩 (公开静态成员函数) |
[静态] |
返回 extents 的动态秩 (公开静态成员函数) |
[静态] |
返回 extents 在特定秩索引上的静态尺度大小 (公开静态成员函数) |
返回 extents 在特定秩索引上的动态尺度大小 (公开成员函数) | |
辅助类型 | |
返回范围 [ 0, i) 中各尺度大小的乘积 (仅用于阐述的成员函数*) | |
返回范围 [ i + 1, rank()) 中的各尺度大小的乘积 (仅用于阐述的成员函数*) | |
将输入转型为整数类型 (仅用于阐述的成员函数*) | |
(private) |
返回特定秩索引以下的动态尺度的数量 (仅用于阐述的成员函数*) |
(private) |
返回数值 r ,使得对于某个特定实参 i ,范围 [ 0, r + 1) 中恰好有 i + 1 个动态尺度 (仅用于阐述的成员函数*) |
非成员函数
(C++23) |
在两个 extents 的每个维度上比较底层尺度 (函数) |
推导指引(C++23)
示例
本节未完成 原因:暂无示例 |
参阅
(C++11) |
获取数组类型的维数 (类模板) |
(C++11) |
获取数组类型在指定维度的大小 (类模板) |