c++ std::span中std::dynamic_extent的作用是什么

3okqufwl  于 2023-08-09  发布在  其他
关注(0)|答案(2)|浏览(110)

我知道std::span是静态的。它只是一堆向量/数组/等的视图。元素中。
我看到span的constructors,似乎在4-6中使用了std::dynamic_extent。但是在这些构造函数中,有一个必需的模板参数用于大小-std::size_t N。对我来说,这意味着size/count/len在编译时是已知的。什么是std::dynamic_extent

ilmyapht

ilmyapht1#

std::dynamic_extent的定义是

inline constexpr std::size_t dynamic_extent 
    = std::numeric_limits<std::size_t>::max();

字符串
它是std::size_t的一个特殊值,用于指示std::span具有动态范围。
size -std::size_t N有一个必需的模板参数。对我来说,这意味着size/count/len在编译时是已知的。
std::span的“size”仍然是在编译时指定的,只是当“size”采用那个特殊值时,它被视为动态范围。

lvjbypge

lvjbypge2#

构造函数将设置初始大小,但当span具有dynamic_extent时,其大小可能会发生变化

std::array<int, 4> arr{1, 2, 3, 4};
std::span<int> s{arr}; // whole array view     // size is 4
s = s.subspan(1, 2)}; // restricted array view // size is 2 now

字符串

相关问题