[英]How does vector<bool> deal with references and iterators?
因为我们都知道C ++ 98 vector<bool>
specialization将布尔值存储为位而不是bool变量。 vector<bool>
的元素是不可寻址的,因为C ++没有指针和对bit的引用,是否有解决方法,任何明显的陷阱( 我似乎都没有注意到 ),甚至尝试和这样做?
vector<bool>
的元素可以作为任何其他vector
的元素寻址,例如使用operator []
。 但是,由于内存压缩,操作会更慢。
也许更快的实现将使用您自己的内存实现并使用二进制移位来解决特定的布尔值。
另一种方法是在适当的地方使用简单数组。 请记住,您可以使用new
运算符动态分配它。
编辑替代实现可能在例如此线程中找到。
vector<bool>
使用带有重载运算符的包装器对象,而不是引用/指向位的指针,这些运算符的行为(在大多数情况下)类似于布尔值的引用/指针。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.