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

2D array, some cells hold specific data

本文关键字:保存 数据 单元格 数组 2D      更新时间:2023-10-16

我有一个数组,假设(为了更容易(x和y位置。我只想保存某些单元格的特定数据,这似乎很复杂。我可以保存所有单元格的特定数据,但我只想保存其中一些单元格的特定数据(不浪费内存,对于小型 3000x3000 数组,有 9 000 000 个单元格(。此外,它必须非常快。我不知道该怎么办。哈希算法似乎用于不同类型的问题。例如,我希望 x=50 和 y=100 进入容器并快速获取数据,但如果 x=100 和 y=50 等怎么办。谢谢你的帮助。

使用无序集合

key可以是 x,y 的元组

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

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

int sparseMatrix[x][y]

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

使用这个:

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

HashMaps的HashMap应该做得很好,并且可以作为用例的稀疏矩阵。它在不同语言中的实现将是,

  • C++11:unordered_map<int, unordered_map<int, int>> store;
  • 爪哇:HashMap<Integer, HashMap<String, Integer>> store = new HashMap<>();
  • 蟒蛇:store = defaultdict(dict)