我在编写的代码中遇到了这个问题:我需要能够在 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。
感谢您的帮助和建议! :)
最佳答案
像这样的字典怎么样?
class vector3(){
int x,y,z;
}
Dictionary<vector3,object>
关于arrays - 如何以 3D 表示形式有效存储大量但极其稀疏的数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25191263/