命名空间
变体
操作

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 = /* 见下文 */
(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 在特定秩索引处的动态维度大小
(公有成员函数) [编辑]
辅助函数
返回范围 [0i) 中的维度大小的积
(仅供演示的成员函数*)[编辑]
返回范围 [i + 1rank()) 中的维度大小的积
(仅供演示的成员函数*)[编辑]
将输入转型为整数类型
(仅供演示的成员函数*)[编辑]
返回特定秩索引下方的动态维度数量
(仅供演示的成员函数*)[编辑]
返回数 r,使得在范围 [0r + 1) 中,对于特定参数 i 恰好有 i + 1 个动态维度
(仅供演示的成员函数*)[编辑]

[编辑] 非成员函数

比较两个 extents 的每个维度中的底层维度
(函数) [编辑]

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

[编辑] 示例

[编辑] 参见

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