如何处理任意增长的稀疏数组

时间:2017-02-20 05:32:17

标签: c++ arrays multidimensional-array sparse-matrix

我正在寻找(C ++)数据结构来存储有关2D网格上的点的信息。将为网格的一部分填充一些初始值,然后将以非确定性方式设置新点,一次一个。棘手的部分是,新的积分并不总是被添加到相同的一侧'数组。网格需要能够向任何方向增长(向上/向左/向下/向右)。

还有可能将点添加到超过阵列当前范围的多个点。从这个意义上讲,稀疏数组似乎有些适用,尽管数据并不是特别稀疏,并且最终会出现填补空白。此外,稀疏数组仍然无法解决我的问题,无法将数据添加到数组的后面。问题

我遇到的一个可能的解决方案是使用哈希映射,键表示坐标。

std::map<std::vector<int>, MyStructClass> gridMap;
gridMap[{1,2}] = myStructInstance1;
gridMap[{-2,4}] = myStructInstance2;
//...etc
MyStructClass whatsAtSomePosition = gridMap[{3,1}];

我不相信这将是最有效的数据结构,但我找不到符合我需求的其他东西。我在C ++中还有哪些其他选择?

0 个答案:

没有答案