algo — C++23 日本語リファレンス GitHub

Matrix

クラス · 行列の四則演算・行列式・累乗・転置

template <class T>
struct Matrix;

概要

行列の四則演算・行列式・累乗・転置

テンプレートパラメータ

名前 説明
T 要素の型

計算量

構築・破棄

名前 説明 計算量
(constructor) (1) 空の行列を作る
(2) x 行 x 列の零行列を作る
(3) x 行 y 列の零行列を作る
(4) 二次元配列 _v をコピーして行列を作る
(1) $O(1)$
(2) $O(x^2)$
(3) $O(xy)$
(4) $O(rc)$

メンバ関数

名前 説明 計算量
begin (1) 先頭行を指す読み取り専用イテレータを返す
(2) 先頭行を指すイテレータを返す
$O(1)$
end (1) 行列の終端を指す読み取り専用イテレータを返す
(2) 行列の終端を指すイテレータを返す
$O(1)$
det 正方行列の行列式を返す $O(n^3)$
pow 正方行列の k 乗を返す $O(n^3\log k)$
unit_matrix 正方行列を単位行列に変更する $O(n^2)$
transposed 転置行列を返す $O(rc)$
print_debug 行列の全要素を標準エラー出力へ表示する $O(rc)$

演算子

名前 説明 計算量
operator[] (1) i 行目を読み取り専用で返す
(2) i 行目を返す
$O(1)$
operator+= 同じ大きさの行列 rhs を要素ごとに加算する $O(rc)$
operator-= 同じ大きさの行列 rhs を要素ごとに減算する $O(rc)$
operator*= 行列 rhs を右から乗算する 左辺を $r\times k$、右辺を $k\times c$ として $O(rkc)$
operator- (1) 全要素の符号を反転した行列を返す
(2) 行列差を返す
$O(rc)$
operator+ 行列和を返す $O(rc)$
operator* (1) 行列積を返す
(2) 列ベクトル rhs を右から掛けた結果を返す
(1) 左辺を $r\times k$、右辺を $k\times c$ として $O(rkc)$
(2) $O(rc)$

メンバの詳細

(constructor)

// (1)
Matrix() = default;

// (2)
Matrix(int x);

// (3)
Matrix(int x, int y);

// (4)
Matrix(const std::vector<std::vector<T>> &_v);

(1) 空の行列を作る

(2) x 行 x 列の零行列を作る

(3) x 行 y 列の零行列を作る

(4) 二次元配列 _v をコピーして行列を作る

begin

// (1)
const auto begin() const;

// (2)
auto begin();

(1) 先頭行を指す読み取り専用イテレータを返す

(2) 先頭行を指すイテレータを返す

end

// (1)
const auto end() const;

// (2)
auto end();

(1) 行列の終端を指す読み取り専用イテレータを返す

(2) 行列の終端を指すイテレータを返す

operator[]

// (1)
const auto &operator[](int i) const;

// (2)
auto &operator[](int i);

(1) i 行目を読み取り専用で返す

(2) i 行目を返す

operator-

// (1)
Matrix operator-() const;

// (2)
Matrix operator-(const Matrix &rhs) const;

(1) 全要素の符号を反転した行列を返す

(2) 行列差を返す

operator*

// (1)
Matrix operator*(const Matrix &rhs) const;

// (2)
std::vector<T> operator*(const std::vector<T> &rhs);

(1) 行列積を返す

(2) 列ベクトル rhs を右から掛けた結果を返す