我试图做一个布尔值的3维数组,告诉我如果我以前访问过一个简单的导航算法的三维空间位置。该数组可能很大(沿着1,000,000 x 1,000,000 x 1,000,000或更大的线),所以我想知道是否会更快地声明一个大小的数组并将每个布尔值设置为false,或者使一个坐标为(x,y,z)的键和一个bool类型的值的映射。C++ std :: map vs动态数组
从我认为,该数组将需要O(1)来查找或修改一个坐标,并且地图将采取O(log n)来查找或插入一个值。显然,为了访问值,数组更快。但是,这是否抵消了声明这样一个数组所需的时间?
谢谢
'std :: unordered_map'平均为O(1) – Rapptz
为什么不使用哈希映射(C++ 11中的'unordered_map')? – Xeo
即使在每个单元一位,您也需要10^11 GB以上的内存来存储数组。你应该考虑更好的方法。 –