【发布时间】:2021-05-14 11:02:42
【问题描述】:
在我的程序中,我使用 boost::multi_array ,有时将指向容器内元素的指针转换为其索引很重要,例如,检查该元素是否在任何维度上都不在数组的边界上. 这是过度简化的代码,只是为了解释其含义:
boost::multi_array<int, 2> arr2d(boost::extents[10][10]);
const auto data = arr2d.data();
const auto end = data + arr2d.num_elements();
for ( auto it = data; it != end; ++it )
{
[[maybe_unused]] int v = *it;
// how to convert it into x and y indices in arr2d?
}
在 boost::multi_array 中是否有任何内置的有效方法用于指针到索引的转换?或者唯一的可能性是手动分割相对于数据开始的偏移量?
【问题讨论】:
-
获取两个指针(都指向同一个数组)之间的元素数量的正常方法是减去它们。要获取索引,其中一个指针应该是指向第一个元素的指针。我不知道这如何转化为
boost::multi_array。
标签: c++ boost boost-multi-array