【问题标题】:HashCodeBuilder in C++C++ 中的 HashCodeBuilder
【发布时间】:2009-08-21 09:41:38
【问题描述】:

如果我想在 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++ 中有类似的东西吗?

【问题讨论】:

    标签: java c++ hashcode


    【解决方案1】:

    【讨论】:

    • 谢谢大师!这正是我所需要的!
    【解决方案2】:

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

    【讨论】:

    • 是的,我明白了。当两个对象的值相等时,它们应该得到相同的哈希码。而且它们可能是两个不同的对象实例。如果我想获得一个对象 id,也许 UUID 是一个选择?
    猜你喜欢
    • 1970-01-01
    • 2012-06-17
    • 2020-07-31
    • 1970-01-01
    • 1970-01-01
    • 2010-12-05
    • 1970-01-01
    • 2015-03-30
    • 1970-01-01
    相关资源
    最近更新 更多