gsl::multi_span 有什么用?
What is gsl::multi_span to be used for?
C++ 核心指南提到跨度,而不是 "multi-spans"。但是 - 我看到微软的 GSL 实现有一个 multi_span
class
template <
typename ValueType,
std::ptrdiff_t FirstDimension,
std::ptrdiff_t... RestDimensions
>
class multi_span { ... };
所以,显然这是 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
从链接源来看,它似乎也支持运行时边界,但我不确定这些语法是否正确。
C++ 核心指南提到跨度,而不是 "multi-spans"。但是 - 我看到微软的 GSL 实现有一个 multi_span
class
template <
typename ValueType,
std::ptrdiff_t FirstDimension,
std::ptrdiff_t... RestDimensions
>
class multi_span { ... };
所以,显然这是 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
从链接源来看,它似乎也支持运行时边界,但我不确定这些语法是否正确。