C ++核心指南提到了跨度,而不是“多跨度”。但是 - 我看到微软的GSL实现有一个multi_span
class
template <
typename ValueType,
std::ptrdiff_t FirstDimension,
std::ptrdiff_t... RestDimensions
>
class multi_span { ... };
所以,显然这是某种gsl::span
的多维版本。但那应该是什么意思呢?为什么我们需要这种多维跨度,或者更确切地说 - 我们什么时候才能使用它?我似乎无法找到任何关于此的文件。
答案 0 :(得分:4)
简而言之,它是一个跨越连续内存的跨度,代表多维数组。
以下是使用示例:
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
从链接的源看来,它似乎也支持运行时边界,但我不确定这些的正确语法。