vector <bool>如何处理引用和迭代器?

iKl*_*lsR 5 c++ boolean proxy-classes bitvector stdvector

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

Bor*_*jev 2

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

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

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

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