c++ - 在访问 vector<bool> 中的元素地址时获取临时地址

标签 c++

我仅在访问 bool vector 中的元素地址时收到警告。 对于 int 等其他数据类型的 vector ,我不会收到任何警告。

例如

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

我在声明“cout << &boolVect[0] << endl;”时收到警告“taking address of temporary”
有人可以澄清一下吗?

最佳答案

std::vector<bool>坏了(参见例如 http://www.informit.com/guides/content.aspx?g=cplusplus&seqNum=98Alternative to vector<bool> )。它是 std::vector<T> 的特化,但各个元素存储为打包位。因此,您不能获取单个元素的地址。因此,这真的很烦人。

关于c++ - 在访问 vector<bool> 中的元素地址时获取临时地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8324699/

相关文章:

c++ - 如何从 C++ 自定义操作获取 MSI 'UILevel' 属性

c++ - 未收到 ZMQ 消息

c++ - 基本 C++ 递归

c++ - 如何在 C++ 中实现接口(interface)或类接口(interface)关系?与 .h 文件和 void () = 0 混淆

c++ - 基于 Linux 的操作系统,带有静态库 : what can I do?

C++ 如何在数组中存储对象而不删除它们

C++ 错误, undefined reference 类

c++ - 什么会导致 VTable 指针在 Win32 调试版本中为 0xdddddddd?

c++ - Netbeans 外部控制台错误

c++ - 在 C++ 中包含头文件时的循环类依赖