如何在 C++0x 中组合哈希值?

How do I combine hash values in C++0x?(如何在 C++0x 中组合哈希值?)

本文介绍了如何在 C++0x 中组合哈希值?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

C++0x 添加了 hash<...>(...).

C++0x adds hash<...>(...).

我找不到 hash_combine 函数,如 提升.实现这样的事情的最干净的方法是什么?也许,使用 C++0x xor_combine?

I could not find a hash_combine function though, as presented in boost. What is the cleanest way to implement something like this? Perhaps, using C++0x xor_combine?

推荐答案

好吧,就像 boost 人员那样做:

Well, just do it like the boost guys did it:

template <class T>
inline void hash_combine(std::size_t& seed, const T& v)
{
    std::hash<T> hasher;
    seed ^= hasher(v) + 0x9e3779b9 + (seed<<6) + (seed>>2);
}

这篇关于如何在 C++0x 中组合哈希值?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本文标题为:如何在 C++0x 中组合哈希值?

基础教程推荐