class template
std::linalg::layout_blas_packed::mapping(C++26)
namespace std::linalg {
template<class Triangle, class StorageOrder>
class layout_blas_packed {
template<class Extents>
struct mapping;
};
}
概要
layout_blas_packed::mapping
は、BLASにおける正方行列(square matrix)パックレイアウトと互換性のあるレイアウトマッピングを表現するクラスである。
layout_blas_packed<T, SO>::mapping<E>
はトリビアルコピー可能であり、regular
のモデルである。
説明専用メンバ変数
layout_blas_packed::mapping
クラステンプレートは、下記の説明専用メンバ変数を保持する。
メンバ関数
構築・破棄
名前 |
説明 |
対応バージョン |
(constructor) |
コンストラクタ |
C++26 |
(destructor) |
デストラクタ |
C++26 |
operator= |
コピー代入演算子 |
C++26 |
観測
名前 |
説明 |
対応バージョン |
extents |
多次元配列のサイズextents_ を取得する |
C++26 |
required_span_size |
要素アクセス範囲を取得する |
C++26 |
operator() |
多次元配列インデクスから要素位置へ変換する |
C++26 |
stride |
行列サイズ1x1ならば1 |
C++26 |
is_unique |
行列サイズ1x1ならばtrue |
C++26 |
is_exhaustive |
true を返す |
C++26 |
is_strided |
行列サイズ1x1ならばtrue |
C++26 |
静的メンバ関数
名前 |
説明 |
対応バージョン |
is_always_unique |
行または列の静的要素数が1ならばtrue |
C++26 |
is_always_exhaustive |
true を返す |
C++26 |
is_always_strided |
is_always_unique() |
C++26 |
メンバ型
非メンバ(Hidden friends)関数
比較演算子
例
#include <linalg>
#include <mdspan>
#include <print>
namespace linalg = std::linalg;
int main()
{
double arr[] = {1, 2, 3, 4, 5, 6};
// 行優先格納順の上三角要素から3x3対称行列を構築
using Ext2D = std::dextents<size_t, 2>;
using LayoutPacked = linalg::layout_blas_packed<linalg::upper_triangle_t, linalg::row_major_t>;
using Mapping = LayoutPacked::mapping<Ext2D>;
std::mdspan mat{arr, Mapping{Ext2D{3, 3}}};
// 1 2 3
// - 4 5
// - - 6
for (size_t i = 0; i < mat.extent(0); i++) {
for (size_t j = 0; j < mat.extent(1); j++) {
std::print(" {}", mat[i, j]);
}
std::println("");
}
}
出力
1 2 3
2 4 5
3 5 6
バージョン
言語
処理系
関連項目
参照