我在访问bool的vector中的元素地址时才收到警告。 对于像int这样的其他数据类型的向量,我没有得到任何警告。
例如
vector<bool> boolVect;
boolVect.push_back(false);
if (boolVect.size() > 0) {
cout << &boolVect[0] << endl;
}
我在声明“cout&lt;&lt;&amp; boolVect [0]&lt;&lt; endl;”中收到警告“接受临时地址”
请有人澄清一下吗?
答案 0 :(得分:15)
std::vector<bool>
已被破坏(请参阅例如http://www.informit.com/guides/content.aspx?g=cplusplus&seqNum=98或Alternative to vector<bool>)。它是std::vector<T>
的特化,但各个元素存储为打包位。因此,您无法获取单个元素的地址。因此,它真的很烦人。
答案 1 :(得分:3)
vector<bool>
是标准vector
的模板专精。在正常实现中,它节省了空间,每bool
只占用一位。为方便起见,您将获得一个临时对象作为您的单个位的参考,否则您无法解决该问题。