3

如果我想在 Java 中为给定对象生成哈希,我知道的最简单的方法是使用 Apache Commons HashCodeBuilder

public class Person {
   String name;
   int age;
   boolean smoker;
   ...

   public int hashCode() {
     // you pick a hard-coded, randomly chosen, non-zero, odd number
     // ideally different for each class
     return new HashCodeBuilder(17, 37).
       append(name).
       append(age).
       append(smoker).
       toHashCode();
   }
 }

C ++中有类似的东西吗?

4

2 回答 2

7

使用boost::hash_combine

于 2009-08-21T09:55:56.267 回答
0

顺便说一句,hashCode方法不返回对象的标识符。这是一个普遍的误解。没有什么可以阻止同一类的 2 个对象返回相同的值。hashCode 用于哈希表数据结构,而不是用于识别对象。这是两个不同的概念。

于 2009-08-21T10:37:28.650 回答