是否有一些技巧可以将vector<bool>
快速转换为bool *
数组?我有矢量,保留了很多单元格,我必须将其转换为bool *
数组。我可以通过for循环来完成,但需要花费很多时间。
答案 0 :(得分:5)
如果不将数据从向量复制到原始数组,则无法执行此操作。
原因是因为std::vector<bool>
每个元素只存储一位(尽管是连续存储的)。因此,你不能使用正常的技巧,即......
std::vector<Foo> v(10);
Foo* p = &v[0];
然而,由于它的浅薄,这不是一个好主意。你真的想要一份深刻的副本......
bool* arr = new bool[v.size()];
std::copy(std::begin(v), std::end(v), arr);
// ...
delete[] arr;
如果您不想自己管理记忆,可以使用智能指针。
auto arr = std::make_unique<bool[]>(v.size());
std::copy(std::begin(v), std::end(v), arr.get());