Arrays N维数组的实际使用,其中(N>;3)

Arrays N维数组的实际使用,其中(N>;3),arrays,multidimensional-array,uses,Arrays,Multidimensional Array,Uses,在过去的8年里我一直在编程,现在我只是想知道,如果有任何实际使用的N维数组,其中N>3。我只能看到小于或等于3维的数据结构。有没有人在任何程序中使用了超过3维的数据结构?是否有超越3d的N-D数组的实际用途?如果有,请发布一些示例。几乎可以从物理学中获取任何东西,其中张量是常见的,例如广义相对论,计算化学,量子物理 例如,秩为4的张量是常见的 333双精度 334 LMP2::compute_ecorr_LMP2() 335 { 336定时器tim(“ecorr”); 337 33

在过去的8年里我一直在编程,现在我只是想知道,如果有任何实际使用的N维数组,其中N>3。我只能看到小于或等于3维的数据结构。有没有人在任何程序中使用了超过3维的数据结构?是否有超越3d的N-D数组的实际用途?如果有,请发布一些示例。

几乎可以从物理学中获取任何东西,其中张量是常见的,例如广义相对论,计算化学,量子物理

例如,秩为4的张量是常见的

333双精度
334 LMP2::compute_ecorr_LMP2()
335     {
336定时器tim(“ecorr”);
337
338 sma2::指数r(“r”)、s(“s”);
339 sma2::阵列ecorr;
340双ecorr_lmp2=0.0;
341 for(my_occ_pairs_t::const_iterator iter=my_occ_pairs_u.begin();
342 iter!=my_occ_pairs_uu.end();
343 iter++){
344 sma2::指数i(iter->first-nfzc);
345 sma2::索引j(iter->second-nfzc);
346如果(j.值()>i.值())继续;
347双f;
348如果(i.value()!=j.value())f=2.0;
349其他f=1.0;
350 ecorr.zero();
351 ecorr()+=f*2.0*K_2occ_uu(i,j,r,s)*T_local_uu(i,j,r,s);
352 ecorr()-=f*K_2occ_(i,j,s,r)*T_局部_(i,j,r,s);
353 ecorr_lmp2+=ecorr.value();
354     }
355
356 msg_uu->sum(ecorr_lmp2);
357
358返回ecorr_lmp2;
359     } 

最明显的例子是体素空间列表。。。3+1=4维:)

我记得的唯一一个像样的例子是在1982年的文本中,它让你知道这在我的经历中是多么罕见

例如一个库存系统,牛仔裤可以通过

 inventory[sex][size][length][color][fit] = number_received

只是有点做作。以这种方式构建数据库是没有问题的,但它的代码看起来确实很有趣。

在Ultima III中容纳所有地下城的阵列在逻辑上应该是一个四维阵列。每个地下城都是一个由单元组成的三维网格,它们的大小都是相同的。

通常您会使用其他一些数据结构,因为高维数据往往比较稀疏,而且阵列中的大部分数据都会被浪费。
 inventory[sex][size][length][color][fit] = number_received