gpt4 book ai didi

c++ - 将 STL vector 快速转换为 bool * array

转载 作者:行者123 更新时间:2023-11-30 00:46:05 30 4
gpt4 key购买 nike

是否有一些技巧可以快速转换 vector<bool>bool *大批 ?我有保留大量单元格的 vector ,我必须将其转换为 bool *大批。我可以通过 for 循环来完成,但这需要很多时间。

最佳答案

如果不将数据从 vector 复制到原始数组,则无法执行此操作。

原因是因为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());

Obligatory coliru.

关于c++ - 将 STL vector<bool> 快速转换为 bool * array,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39701660/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com