我想使用缓存,由 boost 的 unordered_map
实现,从 dynamic_bitset
到 dynamic_bitset
。当然,问题在于 bitset 中没有默认的哈希函数。这似乎不像是概念性问题,但我不知道如何解决技术问题。我应该怎么做?
最佳答案
我发现了一个意想不到的解决方案。事实证明,boost 有一个选项可以#define BOOST_DYNAMIC_BITSET_DONT_USE_FRIENDS
。定义它时,包括 m_bits
在内的私有(private)成员将变为公共(public)成员(我认为它是用来处理旧编译器或其他东西的)。
所以现在我可以使用@KennyTM 的答案,稍微改变一下:
namespace boost {
template <typename B, typename A>
std::size_t hash_value(const boost::dynamic_bitset<B, A>& bs) {
return boost::hash_value(bs.m_bits);
}
}
关于c++ - 在 boost 上从 bitset 到 bitset 的无序(哈希)映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3896357/