【发布时间】:2018-02-17 07:21:57
【问题描述】:
在这段代码中
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 = new bool[somenumber];
std::vector<bool> isBitXset(somenumber, false);
但我做不到
legacyFunction(somenumber, isBitXSet.data());
因为data() 不存在std::vector<bool>。而且legacyFunction()的接口我也改不了。
C 风格的 bool 数组有什么好的替代品吗?
【问题讨论】:
-
请注意,缺少
data()成员函数并不是唯一的问题。std::vector<bool>是一种专业化,可以提供更节省空间的实现。所以vector<bool>的元素和一个C风格的bool数组可能不会重叠。 -
@moooeeeep 是的,对,对不起。通常我会自己删除问题。但我更喜欢 Vittorio Romeo 给出的答案,而不是 2009 年的任何答案。
-
不用担心。我只是想让它们链接起来,并认为它们的相关性可能足够近,可以将它们作为重复项。其他人可能不同意。