使用十进制表示法引用多维数组

时间:2018-03-01 03:20:32

标签: c++ arrays multidimensional-array

性能方面(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;

1 个答案:

答案 0 :(得分:3)

首先,除了可以精确表示为signup_form = UserCreationForm() login_form = AuthenticationForm() context["signup_form"] = signup_form context["login_form"] = login_form s的特定十进制数的子集外,您的方法不起作用。例如,float实际上表示为1.0001,因此如果您计算索引,则可能会得到一个不匹配的略有不同的表示形式;这会在访问1.00010001659393310546875时产生误报。

就性能而言,map将是O(log 2 n),而访问2D数组将是O(1)。此外,它也会占用更多内存,因为树为树节点占用空间,而数组则无需开销。