Boost c++ -动态迭代多数组

Boost C++ - dynamically iterating over multi-array

本文关键字:数组 迭代 动态 c++ Boost      更新时间:2023-10-16

我有一个大的2D multi_array,我需要减少到一个较小的数据集(也是2D)。在运行时,我有一个列索引的向量,我想选择并放入子数组。

我知道您可以使用boost::multi_array_type::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_type::index_range的boost代码,发现这是不可能的。该类只有三个成员来存储索引值——start、finish和stride。它不能存储更复杂的值集。

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

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