我正在尝试制作一个三维的布尔数组,它告诉我以前是否曾访问过3d空间中的某个位置以获得简单的导航算法。这个数组可能非常大(类似于1,000,000 x 1,000,000 x 1,000,000或者更大的数字),所以我想知道声明这个大小的数组并将每个布尔值设置为false或者制作是否会更快带有坐标键(x,y,z)和bool类型值的地图。
根据我的图,数组将使用O(1)来查找或修改坐标,并且地图将采用O(log n)来查找或插入值。显然,为了访问值,数组更快。但是,这是否会抵消声明这样一个数组所需的时间?
由于
答案 0 :(得分:1)
您是否尝试过计算像这样的阵列需要多少内存?很多! 如果点的排序很重要,请使用std :: map,否则使用std :: unordeded_map。此外,无序映射为您提供恒定的时间插入和查找。 我想某种搜索树可能就是你要找的东西(例如k-d树)。
答案 1 :(得分:0)
假设您每点使用8位,那么您将创建一个exabyte的数组?哇,你有很多内存!
我认为你应该重新思考你的方法。