0

对于写入/读取文件,我使用元组和向量进行一些低级/二进制操作。当我做std::vector<bool> v(8)orstd::tuple<bool, bool, bool, bool, bool, bool...>时,我是否保证布尔值不被连接?(因此向量和元组的权重至少为 n 个字节(其中 n 是布尔值的数量)。

4

2 回答 2

1

是否std::vector<bool>是位压缩是实现定义的。它的接口没有提供任何直接访问布尔值的方法,因此试图直接访问底层数组,你肯定会在某个时候被烧毁。

std::tuple是 的概括std::pair。因此std::tuple<bool, bool, bool>等效于struct SomeStruct { bool a, b, c; };,换句话说,布尔值不会被位压缩。

于 2012-10-03T13:16:29.217 回答
-1

"向量特化:vector< bool > 向量类模板对bool 类型有一个特殊的模板特化。

提供此特化以优化空间分配:在此模板特化中,每个元素仅占用一位..” 引用自此处

于 2012-10-03T12:43:38.803 回答