我们都可能知道C ++ 98 vector<bool>
特化将布尔值存储为位而不是bool变量。 vector<bool>
的元素是不可寻址的,因为C ++没有指针和对bit的引用,是否有解决方法,任何明显的陷阱(我似乎无视)甚至尝试这样做是否切合实际?
答案 0 :(得分:2)
vector<bool>
的元素可以像任何其他vector
元素一样进行寻址,例如与operator []
。但是,由于内存压缩,操作会变慢。
也许更快的实现将使用您自己的内存实现并使用二进制移位来解决特定的布尔值。
另一种方法是在适当的地方使用简单数组。请记住,您可以使用new
运算符动态分配它。
编辑可能会找到替代实施,例如在this thread。
答案 1 :(得分:1)
而不是引用/指向位的指针,vector<bool>
使用包含重载运算符的包装器对象(在大多数情况下)表示类似于布尔值的引用/指针。