如何检查vector <bool>是否实际上是位向量而不是字节的向量?

Bon*_*nz0 5 c++ bits stl boolean vector

我需要存储一个动态的位数组.
vector <bool>上的C++参考页面包含以下信息:

存储不一定是bool值的数组,但库实现可以优化存储,以便每个值存储在单个位中.

我如何确保我使用的程序vector<bool>确实存储了向量中的位而不是布尔值(字节)?

Mar*_*k B 6

不要试图这样做.相反,使用boost::dynamic_bitset它清楚地表明你真正想要的.在vector<bool>使用迭代器时(因为它通常会返回一个代理对象)优化实际上创建了错误的一些可能性,例如.

  • 虽然这个答案包含了很好的建议,但它实际上并没有*回答问题*.这个问题的有效答案应该解释如何发现所请求的实现细节,或者说明为什么无法提供这样的解释.一旦覆盖了,*然后*就建议为什么答案无论如何都不重要. (4认同)

Csq*_*Csq 0

创建一个巨大的vector<bool>并查看程序的内存使用情况。

或者简单地查看源代码 - 您可以查看标题vector