std::mdspan — multidimensional array view.
1#include <mdspan>23// Create 2D span4std::vector<int> data(12); // 3x4 matrix5std::mdspan<int, std::extents<size_t, 3, 4>> matrix(data.data());67// Access elements8matrix(1, 2) = 42;9std::cout << matrix(1, 2); // 421011// Dynamic extents12std::mdspan<int, std::dextents<size_t, 2>> dyn(data.data(), 3, 4);1314// Iteration15for (size_t i = 0; i < matrix.extent(0); i++) {16 for (size_t j = 0; j < matrix.extent(1); j++) {17 matrix(i, j) = i * 4 + j;18 }19}2021// Properties22std::cout << matrix.rank(); // 223std::cout << matrix.extent(0); // 324std::cout << matrix.total_extent(); // 1225std::cout << matrix.data_handle(); // Raw pointer2627// 3D span28std::vector<float> vol(24); // 2x3x429std::mdspan<float, std::extents<size_t, 2, 3, 4>> volume(vol.data());30volume(1, 2, 3) = 1.0f;
Use cases: