Boost C ++ - 动态迭代多个数组

时间:2011-11-30 18:53:00

标签: c++ boost boost-multi-array

我有一个大的2D multiararray,我需要减少到一小组数据(也是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];

1 个答案:

答案 0 :(得分:0)

我查看了boost :: multi_array_types :: index_range的boost代码,发现这是不可能的。该类只有三个成员来存储索引值 - 开始,结束和步幅。它无法存储更复杂的值集。

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

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

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