2

ublasのsparse_vectorの最初の非ゼロ要素のインデックスと、それに続く各非ゼロ要素のインデックスをどのように知ることができますか?関数begin()は、ベクトル内のインデックスではなく、格納されている最初のゼロ以外の値を知るために使用できるイテレータを提供します。

4

2 に答える 2

1

Oswin Krauseの後、ublasメンリンリストからの答えは次のとおりです。

イテレータは、目的の結果を返すメソッドindex()を提供します。ただし、実際にはconst_iteratorのみがスパースであることを忘れないでください。

for(SparseVector :: const_iterator pos = sparseVec.begin(); pos!= sparseVec.end(); ++ pos){std :: cout << pos.index()<< "" << * pos; }

于 2011-09-22T07:17:25.623 に答える
0

これは、ベクトルの線形スキャンなしでは達成できないようです。APIは、ゼロ以外のインデックスを公開しません。(私があなたなら著者に手紙を書きます。彼らはスパースベクトルをシリアル化するときに非常に役立つ情報を差し控えているからです。)

私は過去にUBLASのスパース行列で同様の問題を抱えていたため、最終的には自分でロールする必要がありました。

于 2011-09-21T15:20:27.213 に答える