在访问向量<bool>中元素的地址时获取临时地址

taking address of temporary while accessing address of a element in vector<bool>

本文关键字:地址 获取 元素 gt 向量 访问 lt bool      更新时间:2023-10-16

我只在访问bool向量中的元素地址时得到警告。对于其他数据类型的vector,如int,则不会得到任何警告。

vector<bool> boolVect;
boolVect.push_back(false);
if (boolVect.size() > 0) {
    cout << &boolVect[0] << endl;
}   

我得到警告"获取临时" at语句的地址"cout <<, boolVect [0] & lt; & lt;endl;"
有人能澄清一下吗?

std::vector<bool>被破坏(参见http://www.informit.com/guides/content.aspx?g=cplusplus&seqNum=98或替代vector)。它是std::vector<T>的专门化,但是单个元素被存储为打包位。因此,您不能获取单个元素的地址。因此,它真的很烦人。

vector<bool>是标准vector的模板特化。在正常的实现中,它节省了空间,每个bool只占用一个位。为方便起见,您可以获得一个临时对象作为您无法处理的单个位的引用。