【发布时间】:2015-02-04 05:25:03
【问题描述】:
总而言之,我处于一个困境中,我无法决定/知道存储“简单”但大量 int 数据类型的最佳方法。
现在我正在使用扁平数组int[] TheData = new int[size * size];,因为我只存储 1 层,但现在我需要至少 3 层。最初的通过过程是使用:
Dictionary<uint, int[]> TheNewData = new Dictionary<uint, int[]>();(关键是层)
但我对字典没有太多经验,所以我相信这会导致通过数组索引访问数据时出现问题,例如平面数组 TheData[x + y * width] = ...
或者简单地说:
int[,] TheNewData = new int[LayerCount, size * size];
上面那个让我觉得很脏。
我什至可以将原始平面数组大小增加三倍并将偏移量应用于下一层...
无论如何,我还必须考虑到大得离谱的地图,比如说宽度 x 高度是 1,000 x 1,000 (图块),即 1,000,000 以int 的形式存储在某处的磁贴(我认为...)。所以数据访问需要相当快,因为我还要处理可能更新整个“active”层。
如果您能“解释”为什么您建议的方法最适合,我们将不胜感激,谢谢。
【问题讨论】:
-
如果您要使用 [0, 1, ... N-1] 标识 N 个对象,则没有理由在数组上使用字典。
-
数据稀疏吗?需要什么访问模式(随机访问或顺序访问)?
-
数据在某些情况下是随机访问的,因此在绘制到画布时,tileIndex(0,1, ... N-1)相对于画布存储在数组中(tile( 1) 放置在 3x, 1y)。
-
为什么二维数组会让你觉得脏?除了可能是因为它应该是一个三维数组?
-
我从不喜欢二维数组,主要是因为我通常使用 c++ 编程,这可能说明了一切。所以我对 c# 了解不多,我很清楚有很多非常明显的差异。
标签: c# arrays dictionary storage