などのインデックス付けのように、matlab を使用して C++ 配列にアクセスすることを考えていa[1 , :]
ます。とても便利です。
演算子 [] をオーバーロードしましたが、a[1, : ]
構文を持つことはできないようです。
私が見つけた解決策は、C++ ソース コードを前処理しa[1, :]
、col(a, 1)
. しかし、これは手間がかかるようです。
誰かがより良い解決策を持っていますか? ありがとう!!
などのインデックス付けのように、matlab を使用して C++ 配列にアクセスすることを考えていa[1 , :]
ます。とても便利です。
演算子 [] をオーバーロードしましたが、a[1, : ]
構文を持つことはできないようです。
私が見つけた解決策は、C++ ソース コードを前処理しa[1, :]
、col(a, 1)
. しかし、これは手間がかかるようです。
誰かがより良い解決策を持っていますか? ありがとう!!
私が見つけた解決策は、C++ ソース コードを前処理し、a[1, :] を col(a, 1) などの C++ 関数に変換するスクリプトを作成することです。しかし、これは手間がかかるようです。
また、壊れやすく、エラーが発生しやすく、複雑さが増し、バグが増え、わかりにくくなります。マクロを使用したほうがよいでしょう (そのようなマクロは絶対に使用しないでください)。
誰かがより良い解決策を持っていますか?
必要な機能を単純に追加することを検討しましたか? 構文は配列インデックスを使用しませんが、コードを見ている人なら誰でも (今から 2 年後の自分を含めて)、明示的 (関数名が関数の動作を示すため) になじみのあるものになります。
Boost マルチ アレイは、1 インデックスとカラム ビューの両方を提供します。range()
matlab operator を置き換えます:
。
ドキュメントのこの例のように配列ビューを定義することもできます
myarray[ boost::indices[range()][range() < 5 ][4 <= range().stride(2) <= 7] ]
これはmatlabと同等です
myarray(:,1:4,4:2:7)