Search code examples
c++hashbitsetboost-dynamic-bitsetboost-unordered

Efficient hashing of `std::bitset` or `boost::dynamic_bitset<>` for Boost's unordered containers


I'm wondering if there's some efficient way to hash std::bitset or boost::dynamic_bitset<> for Boost's unordered containers?

I'm currently converting std::bitset or boost::dynamic_bitset<> to std::string first before hashing them, but it seems this is going to be slow.

Is there some better way?


Solution

  • The C++11 requires standard library to have std::hash<std::bitset> specialized. IOW it should have hash already.

    For boost you should use config: #define BOOST_DYNAMIC_BITSET_DONT_USE_FRIENDS then the dynamic_bitset::m_bits member becomes public and you can make hash on it.