質問

私は大きな2D Multi_Arrayを持っています。これは、より小さなデータセット(2D)に減らす必要があります。実行時に、サブアレイに選択して配置する列インデックスのベクトルがあります。

boost :: multi_array_types :: index_rangeを使用して、元の配列からサブアレイを作成できることを知っていますが、表示されているすべての例では、ハードコード範囲を使用しています。値のベクトルを使用して実行時にindex_rangeを設定する方法はありますか、それともmulti_arrayでは不可能ですか?

私はようなことをしたいと思っています

vector<int> columnIndex; // contains some values
boost::multi_array_types::index_range range;
for(int idx = 0; idx < columnIndex.size(); ++idx)
     range = columnIndex[idx];
役に立ちましたか?

解決

Boost :: multi_array_types :: index_rangeのブーストコードを調べましたが、これは不可能であることがわかりました。クラスには、インデックス値を保存するメンバーが3人しかいませんでした - 開始、終了、歩み。より複雑な値のセットを保存することはできません。

必要な列の数は動的であるため、サブアレイ(array_view)のベクトルを使用しました。

vector<boost::multi_array_ref<double, 2>::array_view<2>::type::const_reference

必要に応じてベクトルに追加しました。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top