相关疑难解决方法(0)

哈希函数从整数坐标对提供唯一的uint

问题一般: 我有一个很大的2d点空间,人口稀少的点.可以把它想象成一个涂有黑点的大白色帆布.我必须迭代并搜索这些点很多.Canvas(点空间)可能很大,接近int的限制,并且在设置点之前它的大小是未知的.

这让我想到了哈希:

理想: 我需要一个带2D点的哈希函数,返回一个唯一的uint32.这样就不会发生碰撞.您可以假设uint32可以轻松计算Canvas上的点数.

重要提示:事先不可能知道画布的大小(甚至可能会改变),所以就像这样

canvaswidth*y + x

遗憾的是,这是不可能的.

我也试过很天真

abs(x)+ abs(y)

但这会产生太多的碰撞.

妥协: 一种散列函数,它提供非常低的碰撞概率.

任何人的想法?谢谢你的帮助.

此致,Andreas T.

编辑:我不得不改变问题文本中的内容:我改变了"能够用uint32计算画布点数"的假设"能够计算画布上的点数(或者要存储的坐标对的数量")通过uint32.我原来的问题没有多大意义,因为我有一个sqrt(max(uint32))xsqrt(max(uint32))大小的画布,它可以通过16位移位和OR进行唯一表示.

我希望这是可以的,因为所有答案仍然对更新的假设最有意义

对不起.

hash hashtable

22
推荐指数
3
解决办法
2万
查看次数

Objective c - NSMutableSet唯一对象属性

在我的应用我有一个类PersonpersonId属性.
现在我需要一些数据结构来保存一堆独特的Person对象(unique = different personId)

所以我想我应该使用NSMutableSet作为我的数据结构,但是如何personId在添加一个人时让NSMutableSet比较属性(所以我不会添加同一个人多一些)?

我的目标是始终拥有一组独特的人(即使我添加了两个具有相同ID的人),我希望NSMutableSet能为我做所有艰苦的工作,如果我正在添加一个已经存在的人它不会添加两次.

iphone objective-c nsset nsmutableset

18
推荐指数
1
解决办法
7540
查看次数

在NSMutableArray中存储CLLocationCoordinates2D

经过一番搜索,我得到了以下解决方案: 参考.

CLLocationCoordinate2D* new_coordinate = malloc(sizeof(CLLocationCoordinate2D));
new_coordinate->latitude = latitude;
new_coordinate->longitude = longitude;
[points addObject:[NSData dataWithBytes:(void *)new_coordinate
length:sizeof(CLLocationCoordinate2D)]];
free(new_coordinate);
Run Code Online (Sandbox Code Playgroud)

并将其访问为:

CLLocationCoordinate2D* c = (CLLocationCoordinate2D*) [[points objectAtIndex:0] bytes];
Run Code Online (Sandbox Code Playgroud)

但是,有人声称这里有内存泄漏?任何人都可以建议我在哪里泄漏以及如何解决它.此外,是否有更好的方法在NSMutableArray中存储CLLocationCoordinate2D列表?请提供示例代码,因为我是Objective C新手.

cocoa nsmutablearray nsdata

15
推荐指数
3
解决办法
1万
查看次数