2012-03-23 45 views
0

我想知道如何读从常量的boost :: multi_array的对象元素的特定元素。 的确,据我所知,我不能使用运算符[],因为它也用于分配。如何从一个const的boost :: multi_array中

我有一个3-d维阵列。那么,如何获得元素myarray的[i] [j] [k]的当myArray的是常量。

在此先感谢。

回答

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

您可以通过值或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]; 
+0

其实我想在STL的vector添加的元素,我得到一个编译错误,当我用[]操作。错误:初始化的参数1 '的空隙的std ::矢量<_Tp, _Alloc> ::的push_back(常量_TP&)[与_TP = ]' – saloua 2012-03-23 10:28:56

+0

@ user1287983可以添加载体声明,该声明myArray的,以及你尝试填充矢量的那一行? – juanchopanza 2012-03-23 10:33:31

+0

矢量 my_vector
常量的boost :: multi_array的 * my_array
my_vector.push_back(&(* my_array)[i] [j] [K]) – saloua 2012-03-23 10:45:06

相关问题