命名空间
变体
操作

std::extents、std::dextents、std::dims

来自 cppreference.com
< cpp‎ | container‎ | mdspan
 
 
 
 
 
在头文件 <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 次)。
3) 一个用于全动态 extents 的便捷别名模板,其中 std::size_t 作为默认索引类型。

extents 的每个特化都模拟 regular 并且是 TriviallyCopyable

内容

[edit] 模板参数

IndexType - 每个非动态 Extents 的类型。应为带符号或无符号整数类型。否则,程序格式错误。
Extents - 表示每个等级索引的范围(整数区间的长度)。它的每个元素要么等于 std::dynamic_extent(在这种情况下,它表示一个动态范围,范围长度将动态确定),要么可以表示为类型 IndexType 的值(那么它表示一个静态范围,范围长度只是它的值),否则程序格式错误。
Rank - 表示全动态 extents 的等级。

[edit] 成员类型

成员类型 定义
index_type IndexType
size_type std::make_unsigned_t<index_type>
rank_type std::size_t

[edit] 成员对象

成员名称 定义
dynamic-extents (私有) 一个类型为 std::array<index_type, rank_dynamic()> 的数组,它存储每个动态范围的大小。
(仅供说明的成员对象*)

[edit] 成员函数

构造一个 extents
(公有成员函数) [edit]
观察者
[静态]
返回一个 extents 的静态等级
(公有静态成员函数) [edit]
返回一个 extents 的动态等级
(公有静态成员函数) [edit]
返回一个 extents 在特定等级索引处的静态范围长度
(公有静态成员函数) [edit]
返回一个 extents 在特定等级索引处的动态范围长度
(公有成员函数) [edit]
辅助程序
返回范围 [0i) 内的范围长度的乘积
(仅供说明的成员函数*)[edit]
返回范围 [i + 1rank()) 内的范围长度的乘积
(仅供说明的成员函数*)[edit]
将输入转换为整数类型。
(仅供说明的成员函数*)[编辑]
(私有)
返回在特定秩索引下方动态范围的数量。
(仅供说明的成员函数*)[编辑]
返回数字 `r`,使得在范围 `[`0`, ` r + 1`)` 中,对于特定参数 `i`,恰好有 `i + 1` 个动态范围。
(仅供说明的成员函数*)[编辑]

[编辑] 非成员函数

比较两个 `extents` 对象在每个维度上的底层范围。
(函数) [编辑]

[编辑] 推导指南(C++23)

[编辑] 示例

[编辑] 另请参阅

(C++11)
获取数组类型的维度数。
(类模板) [编辑]
(C++11)
获取数组类型沿指定维度的尺寸。
(类模板) [编辑]