2012-03-23 46 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

相關問題