Boost C ++ - 在多阵列上动态迭代
-
26-10-2019 - |
题
我有一个大的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
并根据需要添加到向量中。
不隶属于 StackOverflow