vector <bool>常量成员函数

时间:2015-08-18 23:11:01

标签: c++ templates vector stl

Josuttis的书 C ++标准库第二版在第282页提及height

  

请注意,内部代理类型引用仅用于vector&lt;类型的非常量容器。布尔取代。元素访问的常量成员函数返回类型为 const_reference 的值,这是bool的类型定义。

你能帮我理解上面的陈述吗?正如我对vector< bool >所理解的那样,由于通过vector<bool>的访问无法访问某个位,因此它返回一个代理引用类。那么为什么它或如何为常量成员函数返回一个作为operator[]别名的类型(bool的类型定义)?或者我是否理解错误的措辞?

1 个答案:

答案 0 :(得分:3)

代理的要点是你可以同时读写一个值:

 std:vector<bool> v(1, false);
 v[0] = true;
 bool value = v[0];

为了能够写入值,您需要某种目标来写入。通常,您可以使用对该值的引用。但是,没有对比特的引用。因此,std::vector<bool>返回代理,该代理保存对要存储该位的字的引用(或指针)以及在设置该位时影响哪个位的一些指示,通常是该字的掩码。

当只读取一位时,可以在读取时提取该值。无需记住位置和位。因此,std::vector<bool> const可以直接返回bool值。