Код: Выделить всё
template
unsigned long extract_word(const std::bitset& bs)
{
static constexpr std::bitset mask
= std::numeric_limits::max();
auto res = bs >> IW * 64;
res &= mask;
return res.to_ulong();
}
Мой вопрос: есть ли способ извлечь слова из std::bitset «напрямую» из базового массива.
Мотивация
Я хочу использовать наборы битов в качестве ключей для хеш-таблицы. Хотя для std::hash существует специализация std::bitset, похоже, она реализована не слишком хорошо. В libc++ хеширование основано на простом XOR для слов массива. В libstdc++ этот метод более сложен, но он работает с отдельными байтами, а не со словами. Я бы предпочел использовать boost::hash, например, сначала извлекая слова в массив. (Например, boost::dynamic_bitset предоставляет для этой цели функцию to_block_range.)
Подробнее здесь: https://stackoverflow.com/questions/798 ... m-a-bitset
Мобильная версия