nad*_*ada 0 c++ arrays performance gcc stdarray
目标是将a std::uint64_t(用作位掩码)转换为a std::array<bool>.
这个问题类似于C#问题如何将int转换为bool数组?,但对于C++而言,我正在寻找具有最佳性能的算法.
给定a std::uint64_t,用作位掩码,我知道可以按位循环遍历其内容,并将bitcompare值设置为位于相同位置的值std::array<bool>.
但是在全能的C++ 中必须有一种更有效的方式!也许一些肮脏的演员,mallocs或诸如此类的东西?一切都好; 我在Windows/GCC上,所以即使是仅GCC功能也是完全允许的.
如果您只需要随机访问各个位,则可以使用a std::bitset而不是a std::array.那看起来像
uint64_t mask = some_value;
std::bitset<64> random_access(mask);
// and now you can use random_access[some_index]
Run Code Online (Sandbox Code Playgroud)
std::bitset确实缺乏begin()和end()成员,所以你不能使用基于范围的for循环原样.但是,您可以std::bitset使用基于循环的常规索引来迭代a
for (size_t i = 0; i < random_access.size(); ++i)
std::cout << random_access[i] << "\n";
Run Code Online (Sandbox Code Playgroud)