ein*_*ica 6 c++ cpp-core-guidelines
C ++核心准则提到跨度,而不是“跨度”。但是-我看到Microsoft的GSL实现中有一个multi_span类
template <
typename ValueType,
std::ptrdiff_t FirstDimension,
std::ptrdiff_t... RestDimensions
>
class multi_span { ... };
Run Code Online (Sandbox Code Playgroud)
因此,显然这是的某种多维版本gsl::span。但是那是什么意思呢?为什么我们需要这个多维范围,或者更确切地说-我们什么时候使用它?我似乎找不到任何文档。
简而言之,它是连续内存的跨度,代表多维数组。
这是一个使用示例:
int data[6] = {0, 1, 2, 3, 4, 5};
multi_span<int, 2, 3> span{data, 6};
std::cout << span[1][1] << '\n'; //Outputs 4
Run Code Online (Sandbox Code Playgroud)
从链接的来源来看,它似乎还支持运行时范围,但是我不确定这些范围的正确语法。