c++ - 在 boost 上从 bitset 到 bitset 的无序(哈希)映射

标签 c++ boost hash unordered-map bitset

我想使用缓存,由 boost 的 unordered_map 实现,从 dynamic_bitsetdynamic_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/

相关文章:

c++ - 如何在不取消引用指针的情况下返回指针指针值?

c++ - 为什么在继承的标准布局规则中有非静态成员的规则?

c++ - 尽管有 if 语句,Visual Studio 仍尝试包含 linux header

c++ - 学习 C/C++ 多线程的好书/培训 Material

c++ - boost recursive_wrapper 递归

c - c-Hash Map实现在相同的valgrind错误上停留了4天(通过不协调的屏幕共享获得帮助吗?)

c++ - Winsock2:如何通过在 VC++ 中使用 listen 的积压一次只允许一个客户端连接

c++ - 自然语言C/C++中解析树的数据结构

ruby - 如何在 Ruby 中合并哈希数组的内容(键和内容)

arrays - 如何将 perl 哈希数组编码为未命名的 JSON 数组?