gpt4 book ai didi

c++ - 为什么不在 GotW 54 中调整和清除作品?

转载 作者:太空狗 更新时间:2023-10-29 19:55:36 26 4
gpt4 key购买 nike

引用文章Gotw 54通过 HerbSutter,他解释了

  1. “收缩以适应”的正确方法 vector 或双端队列和

  2. 完全清除 vector 或的正确方法双端队列

Can we just use container.resize() and container.clear() for the above task or am I missing something?

最佳答案

vector 包含两种不同的东西:sizecapacity。如果您只是调整 vector,则不能保证容量(保留多少内存)一定会改变。 resize 是一个与您使用了多少有关的操作,而不是 vector 容量有多少。

例如。

size     == how much you are using
capacity == how much memory is reserved
vector<int> v(10);

v.resize(5); // size == 5 but capacity (may or may) not be changed
v.clear() // size == 0 but capacity (may or may) not be changed

最后,容量不应该在每次操作时都改变,因为那会带来大量的内存分配/释放开销。他是说,如果您需要“解除分配”由 vector 保留的内存,请执行此操作。

关于c++ - 为什么不在 GotW 54 中调整和清除作品?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1720953/

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