【发布时间】:2024-01-21 22:26:01
【问题描述】:
我想知道如何从 const boost::multi_array 对象中读取元素。 事实上,据我所知,我不能使用运算符 [],因为它也用于赋值。
我有一个 3-D 维度数组。那么当 myArray 为 const 时,如何获取元素 myArray[i][j][k]。
提前致谢。
【问题讨论】:
标签: c++ boost multidimensional-array boost-multi-array
我想知道如何从 const boost::multi_array 对象中读取元素。 事实上,据我所知,我不能使用运算符 [],因为它也用于赋值。
我有一个 3-D 维度数组。那么当 myArray 为 const 时,如何获取元素 myArray[i][j][k]。
提前致谢。
【问题讨论】:
标签: c++ boost multidimensional-array boost-multi-array
作为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]。如果您正在编写与维度无关的代码,这种表示法可能比显式使用 [] 运算符更有用。
【讨论】:
您可以通过值或常量引用来读取它们。假设您的数组包含 T 类型的元素:
T x = myArray[1][2][3];
const T& y = myArray[1][2][3];
如果你想要一个指向multi_array的元素的指针,那么指针需要是const:
const T* y = &myArray[1][2][3];
【讨论】: