使用十进制表示法来引用多维阵列



performance wise(c (,使用小数位之前的数字访问数组以引用第一行,以及小数点之后的数字是更快的(和或可以接受的(引用列?

例如:

map<float,int> myarray;
myarray[1.0001]=4;
myarray[1.0002]=5;
myarray[1.0003]=2;
myarray[2.0001]=7;
myarray[2.0002]=6;
myarray[2.0003]=3;

vs。:

int myarray[100][1000];
myarray[1][1]=4;
myarray[1][2]=5;
myarray[1][3]=2;
myarray[2][1]=7;
myarray[2][2]=6;
myarray[2][3]=3;

首先,您的方法无法使用,除了可以完全表示为float s的特定十进制数字的子集。例如,1.0001实际上表示为1.00010001659393310546875,因此,如果您计算索引,则可能会获得不匹配的表示形式。访问map

就性能而言,您的 map将为o(log 2 n(,而访问2D阵列将为o(1(。此外,这也将需要更多的内存,因为树占用了树节点的空间,而数组则不含头顶。

最新更新