[英]Where to implement the hash function?
我将一个对象用作unordered_map
的键,因此需要定义一个哈希函数。 我的问题是,哈希函数应该在哪里实现。 我应该将它放在类实现中还是应该在需要的地方实现它。
更新:如果有所作为,所有这些都基于一个框架
如果您预计需要在许多unordered_map
重用它,请将其放在可见的位置,例如在类中。
如果您只需要一个一次性unordered_map
,请将其靠近使用位置。 您甚至可以使用lambda 。
我将它与类定义一起使用,至少如果您在unordered_map
中将==
用作相等函数时使用。 哈希函数的实现取决于相等性比较的实现,并且将两者保持在一起具有一定的优势,以减少某人更改==
不更改哈希函数的可能性。
如果您还为地图定义了一个特殊的相等函数,则应该一起定义这两个函数,可能接近它们将用于实例化地图的位置。
我认为,如果哈希函数是下面的基本函数,则它应该是该类的方法,并且应该是内联的。
int hashFunction(long x){
return (int) (x % N);
}
如果它是一个稍微复杂一点的哈希函数,则应使用该类的方法。因为您将需要一个“ N”,这对于该类是特殊的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.