2D数组,某些单元格保存特定数据

时间:2018-08-29 19:01:25

标签: c++ arrays algorithm containers

我有一个数组(让我们更容易理解)x和y位置。我只想保存某些单元格的特定数据,这似乎很复杂。我可以保存所有单元格的特定数据,但我只想保存其中的一部分(不浪费内存,对于3000x3000的小型阵列,有9000000个单元格)。另外,它必须非常快。我不知道该怎么办。哈希算法似乎是针对另一种问题的。我想有例如x = 50和y = 100转到容器并快速获取数据,但是如果x = 100和y = 50等,该怎么办。谢谢您的帮助。

4 个答案:

答案 0 :(得分:1)

使用unordered set

key可以是x,y的元组

还提供一个类KeyEqual,用您的自定义比较函数替换默认类。

答案 1 :(得分:1)

如果此矩阵中的大多数元素的值为0,则Matrix是由m行和n列定义的二维对象,称为稀疏矩阵

int sparseMatrix[x][y]

通过仅遍历非零元素来减少计算时间。

答案 2 :(得分:0)

使用此:

int a[sizex][sizey]; //this creates an array with empty slots
a[x][y]=somenumber; //this changes a value of slot on (x,y) coordinates

sizex:数组中x的大小

sizey:数组中y的大小

示例:

e =空

int a[4][5]; /*creates an array: e, e ,e ,e
                                 e, e ,e ,e
                                 e, e ,e ,e
                                 e, e ,e ,e
                                 e, e ,e ,e*/
a[1][2]=5; /*Now array look like this: e, e ,e ,e
                                       5, e ,e ,e
                                       e, e ,e ,e
                                       e, e ,e ,e
                                       e, e ,e ,e*/
cout<<a[1][2]; //this prints number 5

答案 3 :(得分:0)

HashMaps的HashMap应该可以很好地工作,并且可以用作您的用例的稀疏矩阵。它会以不同的语言实现,

  • C ++ 11:unordered_map<int, unordered_map<int, int>> store;
  • Java:HashMap<Integer, HashMap<String, Integer>> store = new HashMap<>();
  • Python:store = defaultdict(dict)