23.2 中的 C++ 标准草案 n3242 在包含容器要求的表中指出,包含 X::reference
的容器的 T
必须是 lvalue T
。然而,对于 vector<bool>
, vector<bool>::reference
是另一个类,用于访问存储在 vector 中的单个字节位的代理。
这是否意味着标准中定义的 std::vector
的 T = bool
类模板规范无法满足容器要求?
最佳答案
是的。
类似地,它的迭代器并不是真正的随机访问迭代器,因为 operator*
产生了一个代理对象。vector<bool>
一团糟。
关于c++ - vector<bool> 是否违反容器要求?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12678236/