我有一个大的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的BOOST代码,并发现这是不可能的。该类只有三个成员可以存储索引值 - 开始,完成和步伐。它无法存储更复杂的值集。

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

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top