std::full_extent, std::full_extent_t

来自cppreference.com
< cpp‎ | container‎ | mdspan
 
 
 
 
在标头 <mdspan> 定义
struct full_extent_t { explicit full_extent_t() = default; };
(1) (C++26 起)
inline constexpr std::full_extent_t full_extent {};
(2) (C++26 起)
1)std::full_extent_t 是一种可以用于 std::submdspan 的切片说明符类型。
2) 对应的 (1) 的实例 std::full_extent 是一个切片说明符,标明 std::submdspan 中指定的尺度上的全索引范围。

示例

#include <mdspan>
#include <print>
 
void print(auto view)
{
    static_assert(view.rank() <= 2);
 
    if constexpr (view.rank() == 2)
    {
        for (std::size_t i = 0; i != view.extent(0); ++i)
        {
            for (std::size_t j = 0; j != view.extent(1); ++j)
                std::print("{} ", view[i, j]);
            std::println();
        }
    }
    else if constexpr (view.rank() == 1)
    {
        for (std::size_t i = 0; i != view.extent(0); ++i)
            std::print("{} ", view[i]);
        std::println();
    }
    else
        std::println("{}", view[]);
 
    std::println();
}
 
int main()
{
    const char letters []{'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I'};
    const std::mdspan view(letters, 3, 3);
 
    print(view);
    print(std::submdspan(view, std::full_extent, std::full_extent));
    print(std::submdspan(view, std::full_extent, 1));
    print(std::submdspan(view, 1, std::full_extent));
    print(std::submdspan(view, 2, 1));
}

可能的输出:

A B C 
D E F 
G H I 
 
A B C 
D E F 
G H I 
 
B E H 
 
D E F 
 
H

参阅

(C++26)
返回现存 mdspan 的子集上的视图
(函数模板)