概要
layout_stride
は、多次元配列ビューmdspan
に対して、次元毎に任意ストライド幅を指定したレイアウトマッピングを表現するポリシークラスである。
layout_stride
は、レイアウトマッピングポリシー要件を満たすトリビアル型である。
メンバ型
名前 | 説明 | 対応バージョン |
---|---|---|
mapping |
レイアウトマッピング | C++23 |
例
#include <array>
#include <mdspan>
#include <iostream>
int main()
{
double arr[] = {1, 2, 3, 0, 4, 5, 6, 0};
// 要素数2x3の2次元配列/行優先かつパディングありレイアウト
using Ext2x3 = std::extents<size_t, 2, 3>;
std::array<int, 2> strides{4, 1};
std::layout_stride::mapping<Ext2x3> mapping{{}, strides};
std::mdspan<double, Ext2x3, std::layout_stride> mat{arr, mapping};
for (size_t i = 0; i < mat.extent(0); ++i) {
for (size_t j = 0; j < mat.extent(1); ++j) {
std::cout << (j ? " " : "") << mat[i, j];
}
std::cout << "\n";
}
}
22
#include <array>
#include <mdspan>
#include <iostream>
int main()
{
double arr[] = {1, 2, 3, 0, 4, 5, 6, 0};
// 要素数2x3の2次元配列/行優先かつパディングありレイアウト
using Ext2x3 = std::extents<size_t, 2, 3>;
std::array<int, 2> strides{4, 1};
std::layout_stride::mapping<Ext2x3> mapping{{}, strides};
std::mdspan<double, Ext2x3, std::layout_stride> mat{arr, mapping};
for (size_t i = 0; i < mat.extent(0); ++i) {
for (size_t j = 0; j < mat.extent(1); ++j) {
std::cout << (j ? " " : "") << mat[i, j];
}
出力
1 2 3
4 5 6
バージョン
言語
- C++23
処理系
- Clang: ??
- GCC: ??
- ICC: ??
- Visual C++: ??