Skip to content

败犬日报 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。