組合C 0x 中的雜湊值
C 0x 引入了雜湊 template,它提供了通用的雜湊函數。然而,Boost 中實作的 hash_combine 函數本身並不包含在內。本文探討了在 C 0x 中實作此類函數的實用方法。
使用 xor_combine 的解
一種方法是利用 C 0x 的 xor_combine。此函數透過異或來組合兩個雜湊值。以下是範例實作:
template<class T> inline void hash_combine(std::size_t& seed, const T& v) { seed ^= hash<T>{}(v); }
此方法只是將值 v 的雜湊值與種子進行異或。
使用Boost 的hash_combine 的解決方案
或者,您可以調整Boost 實作hash_combine:
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); }
該函數使用std::ash 計算v 的雜湊值並使用位元XOR 運算將其與種子組合。
兩種方法都提供了組合 C 0x 中的雜湊值的方法。實現的選擇取決於應用程式的具體要求。
以上是如何高效率組合C 0x中的雜湊值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!