5

我们可能都知道 C++ 98vector<bool>专门化将布尔值存储为位而不是布尔变量。vector<bool>的元素不可寻址,因为 C++ 没有指针和对位的引用,是否有解决方法,任何明显的陷阱(我似乎没有注意到),甚至尝试这样做是否可行?

4

2 回答 2

2

vector<bool>的元素可以像任何其他元素一样寻址,vector例如使用operator []. 但是,由于内存压缩,操作会变慢。

也许更快的实现将使用您自己的内存实现并使用二进制移位来处理特定的布尔值。

另一种选择是在适当的地方使用简单的数组。请记住,您可以使用new运算符动态分配它。

编辑替代实现可能会在这个线程中找到。

于 2012-12-30T14:21:27.647 回答
1

而不是对位的引用/指针,而是vector<bool>使用带有重载运算符的包装器对象,这些运算符的行为(在大多数情况下)类似于布尔值的引用/指针。

于 2012-12-30T15:37:52.863 回答