2012-09-07 2 views
2

Мне интересно, есть ли эффективный способ хеширования std::bitset или boost::dynamic_bitset<> для неупорядоченных контейнеров Boost?Эффективное хэширование `std :: bitset` или` boost :: dynamic_bitset <> `для неупорядоченных контейнеров Boost

В настоящее время я преобразовываю std::bitset или boost::dynamic_bitset<> в std::string, прежде чем хэшировать их, но похоже, что это будет медленно.

Есть ли лучший способ?

ответ

4

Для C++ 11 требуется стандартная библиотека, имеющая std::hash<std::bitset>. IOW он должен иметь хэш уже.

Для повышения вы должны использовать конфигурацию: #define BOOST_DYNAMIC_BITSET_DONT_USE_FRIENDS, тогда член dynamic_bitset::m_bits станет общедоступным, и вы можете сделать хэш на нем.

+0

см. Также этот ответ http://stackoverflow.com/a/3897217/1558890 –