3

私は大きな 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];
4

1 に答える 1

0

boost::multi_array_types::index_range のブースト コードを調べたところ、これは不可能であることがわかりました。このクラスには、インデックス値を格納するメンバーが 3 つ (開始、終了、ストライド) しかありません。より複雑な値のセットを格納することはできません。

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

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

必要に応じてベクターに追加するだけです。

于 2011-12-01T02:55:59.743 に答える