Namespaces
Variants

std:: extents, std:: dextents, std:: dims

From cppreference.net
定义于头文件 <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 类型。

目录

模板参数

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 + 1 个动态范围(针对特定参数 i
( 仅用于说明的成员函数* )

非成员函数

(C++23)
比较两个 extents 在各维度上的底层范围
(函数)

推导指引 (C++23)

示例

参见

(C++11)
获取数组类型的维度数量
(类模板)
(C++11)
获取数组类型在指定维度上的大小
(类模板)