Josuttis的书 C ++标准库第二版在第282页提及height
:
请注意,内部代理类型引用仅用于vector<类型的非常量容器。布尔取代。元素访问的常量成员函数返回类型为 const_reference 的值,这是bool的类型定义。
你能帮我理解上面的陈述吗?正如我对vector< bool >
所理解的那样,由于通过vector<bool>
的访问无法访问某个位,因此它返回一个代理引用类。那么为什么它或如何为常量成员函数返回一个作为operator[]
别名的类型(bool
的类型定义)?或者我是否理解错误的措辞?
答案 0 :(得分:3)
代理的要点是你可以同时读写一个值:
std:vector<bool> v(1, false);
v[0] = true;
bool value = v[0];
为了能够写入值,您需要某种目标来写入。通常,您可以使用对该值的引用。但是,没有对比特的引用。因此,std::vector<bool>
返回代理,该代理保存对要存储该位的字的引用(或指针)以及在设置该位时影响哪个位的一些指示,通常是该字的掩码。
当只读取一位时,可以在读取时提取该值。无需记住位置和位。因此,std::vector<bool> const
可以直接返回bool
值。