Цель состоит в том, чтобы преобразовать std::uint64_t
(который используется как битовая маска) в std::array<bool>
.
Этот вопрос аналогичен вопросу С# Как можно Я конвертирую int в массив bool?, но для C++ ищу алгоритм с наилучшей производительностью.
Учитывая std::uint64_t
, который используется в качестве битовой маски, я знаю, что можно просто побитово перебрать его содержимое и установить битовое сравнение с теми, которые находятся в той же позиции в std::array<bool>
.
Но во всемогущем C++ должен быть более эффективный способ! Может быть, какие-то грязные приведения, mallocs или что-то еще? Все ок; Я работаю в Windows/GCC, поэтому полностью разрешены даже функции только для GCC.
std::array<bool>
? Вы можете преобразовать битовую маску вstd::bitset
, чтобы получить произвольный доступ к отдельным битам. - person NathanOliver   schedule 06.07.2018