迭代Boost multi_array视图

时间:2012-09-25 17:36:37

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

有没有办法将视图的所有元素迭代到Boost multi_array?很清楚如何迭代Boost multi_array;即,超越范围[array.data(), array.data() + array.num_elements())。但是如果我在这个数组中创建一个视图(切掉了数组的某个子集),显然使用指针的连续访问是不可能的:视图不会对应任何连续的内存块。 Boost是否提供了解决此问题的机制,还是需要手动实施解决方案?

1 个答案:

答案 0 :(得分:0)

幸运的是,multi_array概念不需要任何连续的内存块。参考实现为每个维度存储步幅的事实提供了足够的信息以在视图上正确迭代。实际上,multi_array概念要求返回的视图可以像标准容器一样进行迭代。