我在处理的代码中遇到了这个问题:我需要能够在RAM中存储大量数据,并且能够使用三个整数i,j,k(类似于x, y,z坐标)。
问题在于,如果我尝试使用3D数组,那么即使是简单的数据集也会表示为:
56000^3 bytes = 185000 GB (where 0 <= i,j,k < 56000)
185 TB 是一个不合理的数据量,我将使用它的问题可能远大于56000。
要解决这个问题,我想利用这个数组极稀疏的事实,实际上,它中只有56 KB的数据(对于上面的简单示例) )。
我正在考虑使用3D链接列表来解决这个问题。这将保证所需的RAM将达到100 KB的数量级。我从在线查看的另一个页面中得到了这个想法,基本上我需要做的就是:
List <List <List <nodes>>> (where each list takes an i, j, or k index)
但在我花几个小时编写自定义链表解决方案之前,我想知道是否有人有更好的建议存储稀疏数据集?问题是每个节点必须采用3个索引i,j,k。
感谢您的帮助和建议! :)
答案 0 :(得分:2)
像......这样的字典呢?
class vector3(){
int x,y,z;
}
Dictionary<vector3,object>