0

我使用一个对象作为一个键unordered_map,所以我需要定义一个哈希函数。我的问题是,哈希函数应该在哪里实现。我应该把它和类实现放在一起,还是应该在我需要的地方实现它。

更新:如果有所作为,所有这些都基于一个框架

4

3 回答 3

3

如果你预计你需要在很多地方重用它unordered_map,把它放在可见的地方,比如在课堂上。

如果您只需要一次性unordered_map使用它,请将它放在靠近您使用它的地方。您甚至可以使用 lambda

于 2012-10-23T19:29:12.377 回答
1

我会把它和类定义放在一起,至少如果你==unordered_map. 哈希函数的实现依赖于等式比较的实现,将两者保持在一起有一定的优势,可以减少有人改变哈希函数而不改变的概率==

如果您还为地图定义了一个特殊的相等函数,那么这两个函数应该一起定义,可能靠近它们将用于实例化地图的位置。

于 2012-10-23T19:33:02.220 回答
0

在我看来,如果哈希函数是基本的,如下所示,它应该是类的方法,也应该是内联的。

int hashFunction(long x){
    return (int) (x % N);
}

如果它是一个更复杂的散列函数,它应该是这个类的一个方法。因为你需要一个“N”,它对那个类来说是特别的。

于 2012-10-23T19:37:58.500 回答