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 = /* 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) |
获取数组类型在指定维度上的大小 (类模板) |