namespace std {
template<size_t PaddingValue = dynamic_extent>
struct layout_right_padded {
template<class Extents>
class mapping;
};
}
概要
layout_right_padded
は、多次元配列ビューmdspan
に対して、パディングあり行優先(row major)レイアウトマッピングを表現するポリシークラスである。
全要素が隣接配置されるlayout_right
とは異なり、layout_right_padded
では最右次元の隣次元(第R-2次元)ストライド幅stride(extents_type::rank() - 2)
が最右次元の要素数extent(extents_type::rank() - 1)
よりも大きい、つまり第R-2次元においてパディングが挿入される可能性がある。
layout_right_padded
の特殊化は、レイアウトマッピングポリシー要件を満たすトリビアル型である。
メンバ型
名前 | 説明 | 対応バージョン |
---|---|---|
mapping |
レイアウトマッピング | C++26 |
例
#include <mdspan>
#include <print>
int main()
{
double arr[] = {1, 2, 3, 0, 4, 5, 6, 0};
// 1 2 3 -
// 4 5 6 -
// 要素数2x3の2次元配列/行優先レイアウト/アライメント4
using Ext2x3 = std::extents<size_t, 2, 3>
std::mdspan<double, Ext2x3, std::layout_right_padded<4>> mat{arr};
for (size_t i = 0; i < mat.extent(0); ++i) {
for (size_t j = 0; j < mat.extent(1); ++j) {
std::print("{}{}", (j ? " " : ""), mat[i, j]);
}
std::println();
}
}
出力
1 2 3
4 5 6
バージョン
言語
- C++26
処理系
- Clang: ??
- GCC: ??
- ICC: ??
- Visual C++: ??