c++ - 计算 std::vector<bool> 中的设置值

标签 c++ visual-c++ vector boolean

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/

相关文章:

c++ - 将 using tr1::shared_ptr 放在 header 中的命名空间 std 中是否合法?

c++ - C++ MS Visual Studio错误 “referenced in function public: void __thiscall …”

c++ - `std::vector` 会做任何我没有要求的事情吗

c++ - 如何在 C++ 中初始化一个空的全局 vector

c++ - 在 C++ 中将父窗体的引用传递给子 UserControl

c++ - 为什么 visual studio 2017 坚持认为我在其他地方没有打开的文件在编辑器之外被修改了?

c++ - 引用临时变量 - 为什么编译器检测不到它?

c++ - MPI_Scatterv 中的 displs 参数是什么?

c++ - 如何以编程方式获取 MSVC 中任何类型的函数的修饰名称

r - 计算一个向量值在另一个向量中出现的次数,包括 R 中的不匹配值