Хорошо, я знаю способ объявить многомерный массив в блиц. Вы бы сделали это так:
blitz::Array<double, 3> blitzArray( 3, 4, 5 );
и получить доступ к таким элементам:
blitzArray(0,0,0) = 1.0001;
Но что, если я хотел объявить массив без указания размеров в начале.
Видите ли, размеры всегда меняются. Как первое измерение начиналось бы как 3, затем превращалось в 8, а затем в 2 и т. Д. То же самое относится и к другим измерениям.
Теперь у меня есть петли для этих размеров. Мой код анализирует файл и может указывать размеры.
Так что я могу сделать что-то вроде:
blitz::Array<double, 3> blitzArray; //declaration
//later in the program after doing stuff
f=0
for(i=0;i<n;i++){
for(j=0;j<m;++j){
for(k=0;k<o;++k){ //n,m,o are decided by some other constraints, doesn't matter
blitzArray(i,j,k)=foo[f++]; //foo is a vector<double>
поэтому здесь я делаю массив массивов массивов и добавляю в каждую ячейку массива то, что находится в векторе foo. Но размеры постоянно меняются.
Задача ещё не решена.
Других решений пока нет …