使用boost库时,功能boost::hash_combine如下:
seed ^= hash_value(v) + 0x9e3779b9 + (seed << 6) + (seed >> 2);
Run Code Online (Sandbox Code Playgroud)
http://www.boost.org/doc/libs/1_46_1/doc/html/hash/reference.html#boost.hash_combine
与简单的XOR-ing相比,这种方法有什么优势?
使用XOR-ing,甚至可以使用散列函数将无序容器用作键,而这一个依赖于顺序.