在C++中,
std::vector<bool>
是标准库中的一个特殊容器,它虽然看似是存储布尔值的动态数组,但实际上是一个
空间优化的特化版本,与其他
std::vector<T>
存在显著差异。这些差异可能导致一些反直觉的行为,需特别注意。
一、特殊设计:位压缩存储
1. 内存优化
std::vector<bool>
不是简单地存储 bool
类型,而是按位存储每个布尔值(通常8个布尔值压缩为1字节),以节省内存空间。例如:
std::vector<bool> bits(8)