C++ 有没有标准的方法来替换C型布尔数组?

C++ 有没有标准的方法来替换C型布尔数组?,c++,arrays,boolean,std,C++,Arrays,Boolean,Std,在这段代码中 void legacyFunction(int length, bool *bitset) { // stuff, lots of stuff } int main() { int somenumber = 6; // somenumber is set to some value here bool *isBitXSet = new bool[somenumber]; // initialisation of isBitXSet.

在这段代码中

void legacyFunction(int length, bool *bitset)
{
    // stuff, lots of stuff
}

int main()
{
    int somenumber = 6;
    // somenumber is set to some value here

    bool *isBitXSet = new bool[somenumber];
    // initialisation of isBitXSet.

    legacyFunction(somenumber, isBitXSet);

    delete[] isBitXSet;
    return 0;
}
我想替换
bool*isBitXSet=newbool[somenumber]通过类似

std::vector<bool> isBitXset(somenumber, false);
因为
std::vector的
data()
不存在。我无法更改
legacyFunction()
的接口

是否有一种很好的替代C型布尔阵列的方法?

您可以使用和:



如果在编译时知道数组的大小,请考虑使用.< /P>不是<代码> STD::数组也有可能吗?@ RaKeE1111:如果<代码> s>在您的第二个示例中:我将如何应用它来进行函数调用?像这样

legacyFunction(somenumber,reinterpret_cast(v.data())?@TobiMcNamobi:这可能会起作用,但我不确定它的安全性和标准合规性。只有经过适当的研究后才能使用。我建议使用
unique\u ptr
@TobiMcNamobi
legacyFunction(somenumber,&v[0])?请注意,缺少的
data()
成员函数不是唯一的问题
std::vector
是一种专门化,可以提供更节省空间的实现。因此
vector
和C-style
bool
数组的元素可能不会重叠。@moooeeep的可能重复是的,对,对不起。通常我会自己删除这个问题。但我更喜欢维托里奥·罗密欧给出的答案,而不是2009年的任何一个答案。不用担心。我只是想把它们联系起来,并认为它们可能关系密切,可以作为复制品。其他人可能不同意。
legacyFunction(somenumber, isBitXSet.data());
int main()
{
    int somenumber = 6;
    // somenumber is set to some value here

    auto isBitXSet = std::make_unique<bool[]>(somenumber);    
    // initialisation of isBitXSet.

    legacyFunction(somenumber, isBitXSet.get());

    return 0;
}
struct my_bool { bool _b; };
std::vector<my_bool> v; // will not use `vector<bool>` specialization