gpt4 book ai didi

c++ - 使用::std::vector 创建数组

转载 作者:太空宇宙 更新时间:2023-11-04 15:11:53 24 4
gpt4 key购买 nike

我想在运行时生成一个::std::vector,就像那样:

::std::vector<int> i;
i.push_back(100);
i.push_back(10);

在某些时候,vector 完成了,我不再需要::std::vector 提供的额外功能,所以我想将它转换为 C 数组:

int* v = i.data();

因为我会不止一次这样做,所以我想释放所有保留的堆内存::std::vector,但我想保留数据,就像那样(伪代码):

free(/*everything from ::std::vector but the list*/);

任何人都可以给我一些建议吗?

提前致谢, jack

最佳答案

在我见过的所有实现中, vector 的分配部分是……数组本身。如果你知道它不会再增长,你可以尝试缩小它,以释放可能未使用的内存:

i.shrink_to_fit();
int* v = i.data();

当然,没有什么能保证实现会做任何事情,但唯一万无一失的替代方法是分配一个新数组,将数据从 vector 移动到数组并清除 vector 。

int *v = new int[i.size];
memcpy(v, i.data, i.size * sizeof(int));
i.clear();

但我真的怀疑你是否会通过这种方式获得重大 yield ......

关于c++ - 使用::std::vector 创建数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55730515/

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