对于写/读文件,我使用元组和向量进行一些低级/二进制操作。
当我执行std::vector<bool> v(8)
或std::tuple<bool, bool, bool, bool, bool, bool...>
时,我是否保证不连接布尔值? (因此向量和元组的权重至少为n个字节(其中n是布尔数)。
答案 0 :(得分:1)
实现定义std::vector<bool>
是否是位打包的。它的接口没有提供任何直接访问bool值的方法,因此试图直接访问底层数组,你肯定会在某些时候被烧毁。
std::tuple
是std::pair
的概括。因此std::tuple<bool, bool, bool>
相当于struct SomeStruct { bool a, b, c; };
,换句话说,bool值不会被打包。
答案 1 :(得分:-1)
“矢量专精化:矢量&lt; bool&gt; 向量类模板具有bool类型的特殊模板特化。
提供此专业化以优化空间分配:在此模板专业化中,每个元素仅占用一位......“引自here。