任何人都可以提供/参考多维行主要顺序的“索引->偏移”*转换的倒数。此外,(伪)代码将不胜感激。
举个例子,简化了引发我的问题的特定问题:我有一个 3 维数据层次结构,用 (a,b,c) 跨越的空间表示,其中 a、b 和 c 是大于或等于零的整数小于 N_a、N_b 和 N_c。我想将数据表示为一维数组。“偏移量”按行主要顺序给出如下:
int offset(a, b, c){
return a*N_b*N_c + b*N_c + c;
}
那么反向转换是什么,即:
int a(int offset);
int b(int offset);
int c(int offset);
此外,我如何将其推广到第 N 维索引?引发这个问题的问题是第 5 维。
万一这很重要,我正在用 c/c++ 编写。