是std::vector<bool>
使用POPCNT
计算 std::count
的结果的指令算法?
如果不是,是否可以在不复制粘贴完整 vector 的情况下实现?为此,我需要访问 unsigned int
值实际存储在该 vector 中,这可能吗?
如果重要的话,我只需要 VC++ 2017 解决方案。
最佳答案
std::count
不使用popcnt
对于 std::vector<bool>
不幸的是(至少对于 GNU C++ 标准库)。
std::vector<bool>
也不提供对其原始存储的访问,std::vector<bool>::data
返回void
。
另一种解决方案是使用 boost::dynamic_bitset<>
。 boost::dynamic_bitset<>::count
使用popcnt
说明,请参阅 assembly output 。
GNU C++ std::vector<bool>
其实现不是最优的,其大小为 40 字节。而sizeof(boost::dynamic_bitset<>)
是 32。
关于c++ - 计算 std::vector<bool> 中的设置值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57309857/