败犬日报 2025-06-05
1. linux 程序在 win 上编译
最方便就用 WSL。
2. 自己实现 std::hash<std::pair<int, int>>
的特化会有问题吗
只要不打开 std 就不是未定义行为。这个未定义行为用的很多,所以其实不是很严重的问题。
打开 std 的写法:
cpp
namespace std { // 这行是未定义行为
template <>
struct hash<pair<int, int>> { ... };
}
不打开 std 的写法:
cpp
template <>
struct std::hash<std::pair<int, int>> { ... };
但是,对 pair 这种标准库类型进行特化,实践上并不好。
至于怎么实现 pair 的哈希算法,可以参考 boost::hash boost::hash_combine。