Common Library
0.9.5
|
対称行列に対する行・列へのアクセスを想定した添字演算子 [詳解]
公開メンバ関数 | |
SymMatIndexer () | |
デフォルト・コンストラクタ [詳解] | |
SymMatIndexer (size_t start, size_t cols, size_t size, size_t stride, size_t step) | |
先頭・行列方向に進む要素数・行方向の飛び幅を指定して構築 [詳解] | |
size_t | operator() (size_t i) const |
指定した添字に対し、実際にアクセスする添字を返す [詳解] | |
size_t | size () const |
要素数 ( アクセス可能な添字の最大値 + 1 ) を返す [詳解] | |
bool | operator== (const SymMatIndexer &si) const |
等号演算子 [詳解] | |
bool | operator!= (const SymMatIndexer &si) const |
不等号演算子 [詳解] | |
対称行列に対する行・列へのアクセスを想定した添字演算子
コンテナやランダム・アクセス反復子を下三角行列として扱い(上三角成分は対角成分に対して対称とする)、行・列方向の添字を表現する。例えば、
[0] 1 2 3 [1] [4] 5 6 [2] [5] [7] 8 [3] [6] [8] [9]
の場合、実際の値は [] 付きの要素のみでコンテナは
{ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }
となり、2 行目 { 1, 4, 5, 6 } の添字は { 1, 4, 5, 6 } となる。
|
inline |
デフォルト・コンストラクタ
全パラメータはゼロで初期化される
|
inline |
先頭・行列方向に進む要素数・行方向の飛び幅を指定して構築
先頭位置とするコンテナ上の添字を start、行方向に進む列数を cols、アクセスする要素数を size、 行方向に進む要素間の幅の初期値を stride、添字の飛び幅を step として構築する。 例えば、
なら 2 番目の要素を先頭に、最初に 3 つ、次に 2 つ先へアクセスした後、残りは 1 つずつ進むような添字になるので、 p( 0 ) = 2, p( 1 ) = 5, p( 2 ) = 7, p( 3 ) = 8 となる。このとき、下記のような対称行列に対し、()で示した経路を進む。 但し、実体のある要素は [] 内のみであることを前提としている。
[0] 1 2 3 [1] [4] 5 6 (2)-(5)-(7) 8 [3] [6] (8) [9]
step = 2 の場合、添字は 2 つずつ進むことになる。先と同じ経路を一つおきに進める場合、
とすれば p( 0 ) = 2, p( 1 ) = 7 となる。アクセスする要素数は二つなので size は半分になるのに対し、 cols の値は変化しないことに注意。
アクセス開始位置を変える場合は start を変更する。
とすれば p( 0 ) = 5, p( 1 ) = 7, p( 2 ) = 8 となる。 cols の値は変化しないことに注意。
start | 先頭のインデックス |
cols | 行方向に進む列数 |
size | アクセスする要素数 |
stride | 行方向に進む要素間の幅の初期値 |
step | 飛び幅(対称行列上での要素の飛び幅) |
|
inline |
指定した添字に対し、実際にアクセスする添字を返す
i | 添字 |
|
inline |
要素数 ( アクセス可能な添字の最大値 + 1 ) を返す
|
inline |
|
inline |