向量<bool>常量成员函数

vector<bool> constant member functions

本文关键字:成员 函数 常量 bool lt 向量 gt      更新时间:2023-10-16

Josuttis的书 c++标准库第二版在第282页提到了vector< bool >:

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

你能帮我理解上面的陈述吗?因此,正如我对vector<bool>的理解,由于通过operator[]的访问不能访问位,它返回代理引用类。为什么是这样,或者如何对于常量成员函数,它返回的类型是bool的别名(bool的类型定义)?还是我理解错了?

代理的意义在于您可以同时读取和写入一个值:

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

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

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