Как получить конкретные элементы из константного повышения :: multi_array - PullRequest
0 голосов
/ 23 марта 2012

Я хотел бы знать, как читать элементы из объекта const boost :: multi_array .Действительно, насколько мне известно, я не могу использовать оператор [], потому что он также используется для присваивания.

У меня есть трехмерный массив измерений.Так как же получить элемент myArray [i] [j] [k] , когда myArray является постоянным

Заранее спасибо.

Ответы [ 2 ]

2 голосов
/ 23 марта 2012

В качестве альтернативы ответа от juanchopanza вы также можете получить доступ к элементам через построение массива индекса из 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 голос
/ 23 марта 2012

Вы можете прочитать их по значению или по константной ссылке. Предполагая, что ваш массив содержит элементы типа T:

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

Если вы хотите указатель на элемент multi_array, указатель должен быть константным:

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