2012-02-16 14 views
2

ブーストuBLASマトリックスの個々の要素のアドレスを得ることが可能かどうか疑問に思っていますか?今ブーストuBLASマトリックスリファレンス

boost::numeric::ublas::matrix<char> bob(3,3); 
some_function(&bob[2][2]); 

、もちろん二行目は動作しませんで...しかし、私はそれがしたい

どのような考えですか?

ありがとうございます!

答えて

3

はシンプルに、次の演算子の戻り値のアドレスを使用していないだろうに働くだろうか?そして、マトリックスレイアウトとは独立していますか?例えば

reference operator() (size_type i, size_type j) 

:uBLASでデフォルトで

some_function(&bob(2,2)); 
+0

私はあなたに従うのか分からないのですか?より明示的か説明的なことができますか?申し訳ありません:-( – Richard

+0

回答に例を追加 – Anonymous

+0

問題のインデックスを修正しました。 – Richard

1

デフォルトでは、行列の内部表現は行の主要な1D配列です。

some_function(&bob.data()[i*ncol+j]

+1

? Boost uBLAS仕様のどの部分がこれが機能することを示していますか? – Richard

+0

m.data()基本となる高密度ストレージへの参照を返します。 http://www.boost.org/doc/libs/1_46_0/libs/numeric/ublas/doc/container_concept.htm#matrix。記憶域には2つのタイプがあります:row_majorまたはcolumn_majorです。デフォルトはrow_majorです。私はそれがどこで指定されたのか忘れた。私はかつて私が懸念している限り、lublack行列を使ってlapackルーチンを呼び出しました。m.data()によって1D配列のポインタを取得します。 – pem