Common Library
0.9.5
|
行列(二次元配列)クラス [詳解]
公開型 | |
using | value_type = T |
要素の型 | |
using | iterator = indexer_iterator::Normal< std::valarray< T >, indexer::Slice > |
反復子の型 | |
using | const_iterator = indexer_iterator::Constant< std::valarray< T >, indexer::Slice > |
定数反復子の型 | |
using | size_type = size_t |
添字の型 | |
公開メンバ関数 | |
Matrix () | |
デフォルト・コンストラクタ [詳解] | |
Matrix (size_type rows, size_type cols, value_type val=value_type()) | |
行・列数を指定して構築 [詳解] | |
template<class In > | |
Matrix (In s, In e, size_type sz, bool inRows) | |
データ列を指定して構築 [詳解] | |
Matrix (const Matrix &mat) | |
行列の要素をコピーして構築(コピー・コンストラクタ) [詳解] | |
template<class U > | |
Matrix (const Matrix< U > &mat) | |
任意の型の行列の要素をコピーして構築 [詳解] | |
template<class U > | |
Matrix (const SquareMatrix< U > &mat) | |
正方行列の要素をコピーして構築 [詳解] | |
template<class U > | |
Matrix (const SymmetricMatrix< U > &mat) | |
対称行列の要素をコピーして構築 [詳解] | |
Matrix & | operator= (const Matrix &mat) |
代入演算子の多重定義(型が等しい行列の代入) [詳解] | |
template<class U > | |
Matrix & | operator= (const Matrix< U > &mat) |
代入演算子の多重定義(任意の型の行列の代入) [詳解] | |
template<class U > | |
Matrix & | operator= (const SquareMatrix< U > &mat) |
代入演算子の多重定義(正方行列の代入) [詳解] | |
template<class U > | |
Matrix & | operator= (const SymmetricMatrix< U > &mat) |
代入演算子の多重定義(対称行列の代入) [詳解] | |
void | resize (size_type rows, size_type cols, value_type val=value_type()) |
要素数 ( 行数 × 列数 ) を変更する [詳解] | |
void | assign (size_type rows, size_type cols, value_type val=value_type()) |
要素数 ( 行数 × 列数 ) を変更し、値を初期化する [詳解] | |
template<class In > | |
void | assign (In s, In e, size_type sz, bool inRows) |
行列をデータ列で初期化する [詳解] | |
size_type | rows () const |
行数を返す [詳解] | |
size_type | cols () const |
列数を返す [詳解] | |
iterator | operator[] (size_type r) |
指定した行番号の反復子を返す(添字演算子) [詳解] | |
const_iterator | operator[] (size_type r) const |
指定した行番号の定数反復子を返す(添字演算子) [詳解] | |
iterator | row (size_type r, size_type start=0, size_type stride=1) |
指定した行番号の反復子を返す [詳解] | |
const_iterator | row (size_type r, size_type start=0, size_type stride=1) const |
指定した行番号の定数反復子を返す [詳解] | |
iterator | cbegin (size_type c) |
指定した列番号の反復子を返す [詳解] | |
const_iterator | cbegin (size_type c) const |
指定した列番号の定数反復子を返す [詳解] | |
iterator | column (size_type c, size_type start=0, size_type stride=1) |
指定した列番号の反復子を返す [詳解] | |
const_iterator | column (size_type c, size_type start=0, size_type stride=1) const |
指定した列番号の定数反復子を返す [詳解] | |
iterator | begin () |
先頭位置から始まる全要素へアクセス可能な反復子を返す [詳解] | |
const_iterator | begin () const |
先頭位置から始まる全要素へアクセス可能な定数反復子を返す [詳解] | |
iterator | end () |
要素の末尾を表す反復子を返す [詳解] | |
const_iterator | end () const |
要素の末尾を表す定数反復子を返す [詳解] | |
void | transpose () |
要素の転置を行う [詳解] | |
行列(二次元配列)クラス
テンプレート引数の T は要素の型を表す。 Matrix クラスは要素へのアクセスやサイズ変更・取得などの関数を持つが、 演算用のメンバ関数はないため四則演算を持たないような型も要素にすることができる。
Matrix には専用の反復子が indexer_iterator::Normal と indexer_iterator::Constant を利用して用意されている。 Matrix の行や列に対して反復子を使ってループ処理を行うことができる。 また、添字を使って直接特定の要素へアクセスすることも可能である。
|
inline |
デフォルト・コンストラクタ
行列数はゼロで初期化する。
|
inline |
行・列数を指定して構築
要素は初期値 val で初期化される。val のデフォルトは value_type のデフォルト値になる。
rows | 行数 |
cols | 列数 |
val | 初期値 |
|
inline |
データ列を指定して構築
inRows が true なら sz は行のサイズを表し、全てのデータが行列に代入される最小のサイズが列数となる。 inRows が false なら sz は列のサイズを表し、全てのデータが行列に代入される最小のサイズが行数となる。 データが不足した場合、残りの要素は value_type のデフォルト値となる。
テンプレート引数の In はデータ列 [ s, e ) に対する反復子の型を表す。
s | データ列の開始位置 |
e | データ列の末尾の次の位置 |
sz | 行(または列)のサイズ |
inRows | true なら行方向(一列を並べたら次の列へ進む)に、false なら列方向(一行を並べたら次の行へ進む)にデータ列を並べる |
|
inline |
行列の要素をコピーして構築(コピー・コンストラクタ)
mat | コピー元の行列 |
|
inlineexplicit |
任意の型の行列の要素をコピーして構築
mat | コピー元の行列 |
|
inlineexplicit |
正方行列の要素をコピーして構築
mat | コピー元の正方行列 |
|
explicit |
対称行列の要素をコピーして構築
mat | コピー元の対称行列 |
Matrix< T > & tadah_fussy::Matrix< T >::operator= | ( | const Matrix< T > & | mat | ) |
代入演算子の多重定義(型が等しい行列の代入)
mat | 代入元の行列 |
Matrix& tadah_fussy::Matrix< T >::operator= | ( | const Matrix< U > & | mat | ) |
代入演算子の多重定義(任意の型の行列の代入)
mat | 代入元の行列 |
Matrix& tadah_fussy::Matrix< T >::operator= | ( | const SquareMatrix< U > & | mat | ) |
代入演算子の多重定義(正方行列の代入)
mat | 代入元の正方行列 |
Matrix& tadah_fussy::Matrix< T >::operator= | ( | const SymmetricMatrix< U > & | mat | ) |
代入演算子の多重定義(対称行列の代入)
mat | 代入元の対称行列 |
void tadah_fussy::Matrix< T >::resize | ( | size_type | rows, |
size_type | cols, | ||
value_type | val = value_type() |
||
) |
要素数 ( 行数 × 列数 ) を変更する
行・列それぞれの方向に対し、サイズが小さくなる場合は末尾側の要素は削除され、 大きくなる場合は増分が初期値 val で埋められる。 元の要素は(削除されなければ)残る。その必要がない場合は、 assign( size_type rows, size_type cols, value_type val ) を使ったほうが効率がよい。
rows | 変更後の行数 |
cols | 変更後の列数 |
val | 増分に対する初期値 |
|
inline |
要素数 ( 行数 × 列数 ) を変更し、値を初期化する
rows | 行数 |
cols | 列数 |
val | 初期化する値 |
void tadah_fussy::Matrix< T >::assign | ( | In | s, |
In | e, | ||
size_type | sz, | ||
bool | inRows | ||
) |
行列をデータ列で初期化する
inRows が true なら sz は行のサイズを表し、全てのデータが行列に代入される最小のサイズが列数となる。 inRows が false なら sz は列のサイズを表し、全てのデータが行列に代入される最小のサイズが行数となる。 データが不足した場合、残りの要素は value_type のデフォルト値となる。
テンプレート引数の In はデータ列 [ s, e ) に対する反復子の型を表す。
s | データ列の開始位置 |
e | データ列の末尾の次の位置 |
sz | 行(または列)のサイズ |
inRows | true なら行方向(一列を並べたら次の列へ進む)に、false なら列方向(一行を並べたら次の行へ進む)にデータ列を並べる |
|
inline |
行数を返す
|
inline |
列数を返す
|
inline |
指定した行番号の反復子を返す(添字演算子)
r | 行番号 |
|
inline |
指定した行番号の定数反復子を返す(添字演算子)
r | 行番号 |
Matrix< T >::iterator tadah_fussy::Matrix< T >::row | ( | size_type | r, |
size_type | start = 0 , |
||
size_type | stride = 1 |
||
) |
指定した行番号の反復子を返す
r | 行番号 |
start | 列番号の開始位置 |
stride | 列方向の飛び幅 |
Matrix< T >::const_iterator tadah_fussy::Matrix< T >::row | ( | size_type | r, |
size_type | start = 0 , |
||
size_type | stride = 1 |
||
) | const |
指定した行番号の定数反復子を返す
r | 行番号 |
start | 列番号の開始位置 |
stride | 列方向の飛び幅 |
|
inline |
指定した列番号の反復子を返す
c | 列番号 |
|
inline |
指定した列番号の定数反復子を返す
c | 列番号 |
Matrix< T >::iterator tadah_fussy::Matrix< T >::column | ( | size_type | c, |
size_type | start = 0 , |
||
size_type | stride = 1 |
||
) |
指定した列番号の反復子を返す
c | 列番号 |
start | 行番号の開始位置 |
stride | 行方向の飛び幅 |
Matrix< T >::const_iterator tadah_fussy::Matrix< T >::column | ( | size_type | c, |
size_type | start = 0 , |
||
size_type | stride = 1 |
||
) | const |
指定した列番号の定数反復子を返す
c | 列番号 |
start | 行番号の開始位置 |
stride | 行方向の飛び幅 |
Matrix< T >::iterator tadah_fussy::Matrix< T >::begin |
先頭位置から始まる全要素へアクセス可能な反復子を返す
この反復子は先頭から同列の次の行へとたどり、末尾に達したら次の列の先頭に移る。
Matrix< T >::const_iterator tadah_fussy::Matrix< T >::begin |
先頭位置から始まる全要素へアクセス可能な定数反復子を返す
この反復子は先頭から同列の次の行へとたどり、末尾に達したら次の列の先頭に移る。
Matrix< T >::iterator tadah_fussy::Matrix< T >::end |
要素の末尾を表す反復子を返す
このメンバ関数で返される反復子は、begin() で得た先頭位置から始まる全要素へアクセス可能な反復子の末尾を表す。 行・列に対する反復子の末尾は、indexer_iterator::end や const_indexer_iterator::end で得ることに注意。 例えば以下は 1 列目の列ベクトルのノルムを計算するためのプログラムで、末尾の指定は a->end() ではなく col.end() となっている。
Matrix< T >::const_iterator tadah_fussy::Matrix< T >::end |
要素の末尾を表す定数反復子を返す
このメンバ関数で返される反復子は、begin() で得た先頭位置から始まる全要素へアクセス可能な反復子の末尾を表す。 行・列に対する反復子の末尾は、indexer_iterator::end や const_indexer_iterator::end で得ることに注意。 例えば以下は 1 列目の列ベクトルのノルムを計算するためのプログラムで、末尾の指定は a->end() ではなく col.end() となっている。
void tadah_fussy::Matrix< T >::transpose |
要素の転置を行う