使用扁平阵列伪造多维阵列?

时间:2011-03-18 14:51:05

标签: arrays language-agnostic multidimensional-array

有没有一种简单的方法可以使用扁平的多维数据来伪造未知大小的多维数组?我有一个应用程序,其中90%的数组使用将更容易/更快,而不使用递归,并且需要为数组添加一些深度的单个需求。我能想到的唯一方法是保留一个运行的起始索引和结束索引列表,其中1D数组看起来像这样:

[0] = 1
[1] = 2
[2] = 3
[3] = 4
[4] = 5

...并且开始/结束列表如下所示:

Start      End
-----      ---
[0] = 1    [0] = 2
[1] = 3    [1] = 4

这将代表一个如下所示的多维数组:

[0] = 1
[1] = [0] = 2
      [1] = 3
[2] = [0] = 4
      [1] = 5

这可以使用超过2个维度,但在那时我无法确定如何确定在给定原始1D数组和开始/结束列表中的索引时的深度。我也很难弄清楚用什么搜索条件来寻找这种类型的东西。任何一般指导/想法将不胜感激。感谢。

编辑 - 为了给出一些上下文,这是为了支持命令模式实现中的嵌套事务。 1D数组包含命令,人工深度仅用于为每个事务指定名称。由于事务将被谨慎使用,很明显快速通过一个小的int列表将比递归通过多维命令数组更快,并检查每个索引是否有单个命令或内的命令数组。

1 个答案:

答案 0 :(得分:0)

通常,存储结束位置似乎是多余的。数组在下一个数组开始的地方结束,不是吗?

其次,问题是对于每个额外的维度,您需要额外的查找列表,除非它们具有固定的大小。我不知道这是否归结为比原始解决方案更有效。