MSVS 2015:vector <bool>没有'data'成员

Ale*_*lex 3 c++ std stdvector c++11 visual-studio-2015

我有以下代码编译得很好:

void foo::bar(const vector<int> arg) {
    int* ptr = arg.data();
    // do something with ptr
}
Run Code Online (Sandbox Code Playgroud)

我需要重载此函数 vector<bool>

void foo::bar(const vector<bool> arg) {
    int* ptr = arg.data(); 
    // error C2039: 'data': is not a member ofstd::vector<bool,std::allocator<_Ty>>'
    // do something with ptr
}
Run Code Online (Sandbox Code Playgroud)

vector<bool>没有data()会员的原因是什么?

在这里(en.cppreference.com)我没有找到一些特定的bool案例std::vector.

该代码使用MSVS 2015进行编译.

小智 6

vector<bool>专业化的全部意义在于,与所有其他向量不同,数据vector<bool>不需要存储为数组bool.通过在单个字节中打包多个位,可以更有效地存储它.因此,成员bool *可能无法返回data().