std::extents, std::dextents, std::dims
来自 cppreference.cn
定义于头文件 <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*/> (即 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 (私有) |
存储每个动态维度大小的数组。 (仅供演示的成员对象*) |
[编辑] 成员函数
构造一个 extents (公有成员函数) | |
观察器 | |
[静态] |
返回 extents 的静态秩(公有静态成员函数) |
[静态] |
返回 extents 的动态秩(公有静态成员函数) |
[静态] |
返回 extents 在特定秩索引处的静态维度大小(公有静态成员函数) |
返回 extents 在特定秩索引处的动态维度大小(公有成员函数) | |
辅助函数 | |
返回范围 [ 0, i) 中的维度大小的积(仅供演示的成员函数*) | |
返回范围 [ i + 1, rank()) 中的维度大小的积(仅供演示的成员函数*) | |
将输入转型为整数类型 (仅供演示的成员函数*) | |
(私有) |
返回特定秩索引下方的动态维度数量 (仅供演示的成员函数*) |
返回数 r ,使得在范围 [ 0, r + 1) 中,对于特定参数 i 恰好有 i + 1 个动态维度(仅供演示的成员函数*) |
[编辑] 非成员函数
(C++23) |
比较两个 extents 的每个维度中的底层维度(函数) |
[编辑] 推导指引(C++23)
[编辑] 示例
此章节不完整 原因:没有示例 |
[编辑] 参见
(C++11) |
获取数组类型的维度数 (类模板) |
(C++11) |
获取数组类型沿指定维度的尺寸 (类模板) |