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 的 boost 代码,发现这是不可能的。该类只有三个成员来存储索引值 - start、finish 和 stride。它不能存储更复杂的值集。

由于我需要的列数是动态的,因此我使用了一个子数组向量(array_view),

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

并根据需要添加到向量中。

于 2011-12-01T02:55:59.743 回答