如何从const boost :: multi_array中获取特定元素

时间:2012-03-23 10:04:24

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

我想知道如何从 const boost :: multi_array 对象中读取元素。 事实上,据我所知,我不能使用运算符[],因为它也用于分配。

我有一个三维维数阵列。那么当myArray为const时,如何获得元素 myArray [i] [j] [k]

提前致谢。

2 个答案:

答案 0 :(得分:2)

作为juanchopanza's答案的替代方法,您还可以通过boost :: array中的索引数组构建来访问元素。

typedef boost::multi_array<double,3>::index tIndex;
typedef boost::array<tIndex, 3> tIndexArray;

tIndexArray index = {{ 1,2,3 }};
const double x = myArray( index );

会给你元素myArray[1][2][3]。如果您正在编写与维度无关的代码,则此表示法可能比显式使用[]运算符更有用。

答案 1 :(得分:1)

您可以通过值或const引用来读取它们。假设您的数组包含T类型的元素:

T x = myArray[1][2][3];
const T& y = myArray[1][2][3];

如果你想要一个指向multi_array元素的指针,那么指针必须是const:

const T* y = &myArray[1][2][3];