|
| SymmetricMatrix () |
| デフォルト・コンストラクタ [詳解]
|
|
| SymmetricMatrix (size_type size, value_type val=value_type()) |
| 行・列数を指定して構築 [詳解]
|
|
template<class In > |
| SymmetricMatrix (In s, In e, size_type sz) |
| データ列を指定して構築 [詳解]
|
|
| SymmetricMatrix (const SymmetricMatrix &mat) |
| 対称行列の要素をコピーして構築(コピー・コンストラクタ) [詳解]
|
|
template<class U > |
| SymmetricMatrix (const SymmetricMatrix< U > &mat) |
| 型の異なる対称行列の要素をコピーして構築 [詳解]
|
|
SymmetricMatrix & | operator= (const SymmetricMatrix &mat) |
| 代入演算子の多重定義 [詳解]
|
|
template<class U > |
SymmetricMatrix & | operator= (const SymmetricMatrix< U > &mat) |
| 代入演算子の多重定義 [詳解]
|
|
size_type | size () const |
| 行列のサイズを返す [詳解]
|
|
size_type | rows () const |
| 行数を返す [詳解]
|
|
size_type | cols () const |
| 列数を返す [詳解]
|
|
void | resize (size_type size, value_type val=value_type()) |
| 要素数 ( 行数 × 列数 ) を変更する [詳解]
|
|
void | assign (size_type size, value_type val=value_type()) |
| 要素数 ( 行数 × 列数 ) を変更し、値を初期化する [詳解]
|
|
template<class In > |
void | assign (In s, In e, size_type sz) |
| データ列を指定して行列を初期化する [詳解]
|
|
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 |
| 指定した列番号の定数反復子を返す [詳解]
|
|
template<class U > |
SymmetricMatrix< T > & | operator= (const SymmetricMatrix< U > &mat) |
| 代入演算子の多重定義 [詳解]
|
|
template<typename T>
class tadah_fussy::SymmetricMatrix< T >
対称行列クラス
テンプレート引数の T は要素の型を表す。 SymmetricMatrix クラスは要素へのアクセスやサイズ変更・取得などの関数を持つが、 演算用のメンバ関数はないため四則演算を持たないような型も要素にすることができる。
SymmetricMatrix には専用の反復子が indexer_iterator::Normal と indexer_iterator::Constant を利用して用意されている。 SymmetricMatrix の行や列に対して反復子を使ってループ処理を行うことができる。 また、添字を使って直接特定の要素へアクセスすることも可能である。
SymmetricMatrix は、対角を軸に対称な要素が等しいことが保証される。 そのため、非対角成分を変更した場合、対称な要素も同時に変更されることに注意。 もし、それを回避する必要があるときは Matrix や SquareMatrix へコピーして利用する。
template<class T >
template<class In >
データ列を指定して行列を初期化する
データ列から行列への要素の代入方法が特殊であることに注意。 まず、1 列目には先頭からサイズ分の要素がコピーされる。 次の行からは、対角成分からスタートしてデータをコピーしていく。 非対角成分は対角を軸に対称なので、データは片側しか代入しない。 サイズ n の対称行列に過不足なくデータを代入するには n( n + 1 ) / 2 個の要素が必要となる。
( 1, 2, 3, 4, 5, 6 ) → | 1 |
| 2 4 |
| 3 5 6 |
データが不足した場合、残りの要素は value_type のデフォルト値となる。
テンプレート引数の In はデータ列 [ s, e ) に対する反復子の型を表す。
- データ列 [ s, e ) の指定が不正だった場合、ExceptionNegativeLength< std::iterator_traits< In >::difference_type > 例外を投げる。
- 引数
-
s | データ列の開始位置 |
e | データ列の末尾の次の位置 |
sz | 行(または列)のサイズ |