我有一个数组(让我们更容易理解)x和y位置。我只想保存某些单元格的特定数据,这似乎很复杂。我可以保存所有单元格的特定数据,但我只想保存其中的一部分(不浪费内存,对于3000x3000的小型阵列,有9000000个单元格)。另外,它必须非常快。我不知道该怎么办。哈希算法似乎是针对另一种问题的。我想有例如x = 50和y = 100转到容器并快速获取数据,但是如果x = 100和y = 50等,该怎么办。谢谢您的帮助。
答案 0 :(得分:1)
答案 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应该可以很好地工作,并且可以用作您的用例的稀疏矩阵。它会以不同的语言实现,
unordered_map<int, unordered_map<int, int>> store;
HashMap<Integer, HashMap<String, Integer>> store = new HashMap<>();
store = defaultdict(dict)