1

好的,我知道一种在 blitz 中声明多维数组的方法。你会这样做:

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 向量中的内容。但尺寸不断变化。

4

0 回答 0