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