哈希表重写哈希函数 模版 整数pair C++ 1 2 3 4 5 6 7 8 9 10 11 12 13struct custom_hash { static uint64_t splitmix64(uint64_t x) { x += 0x9e3779b97f4a7c15; x = (x ^ x >> 30) * 0xbf58476d1ce4e5b9; x = (x ^ x >> 27) * 0x94d049bb133111eb; return x ^ x >> 31; } size_t operator()(uint64_t x) const { static const uint64_t FIXED_RANDOM = chrono::steady_clock::now().time_since_epoch().count(); return splitmix64(x + FIXED_RANDOM); } }; unordered_map<int, int, custom_hash> safe_map; C++1 2 3 4 5 6 7struct pair_hash { template<class T1, class T2> size_t operator() (const pair<T1, T2>& pair) const { return hash<T1>()(pair.first) ^ hash<T2>()(pair.second); } }; unordered_map<pair<int, int>, int, pair_hash> safe_map;