繁体   English   中英

在哪里实现哈希函数?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM