命名空间
变体
操作

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

来自 cppreference.cn
< cpp‎ | 容器‎ | mdspan
 
 
 
 
 
定义于头文件 <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 次)。
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

[编辑] 数据成员

成员名称 (Member name) 定义
std::array<index_type, rank_dynamic()> dynamic-extents (private) 一个存储每个动态范围大小的数组。
(仅用于阐释的成员对象*)

[编辑] 成员函数

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

[编辑] 非成员函数

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

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

[编辑] 示例

[编辑] 另见

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