gpt4 book ai didi

c++ - 更改 C++ vector 的保留内存

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:50:20 27 4
gpt4 key购买 nike

我有一个包含 1000 个“节点”的 vector

 if(count + 1 > m_listItems.capacity())
m_listItems.reserve(count + 100);

问题是当我要重新填充它时,我也把它清除了。

m_listItems.clear();

容量不变。我用过 resize(1);但这似乎并没有改变容量。那么如何改变储备呢?

最佳答案

vector<Item>(m_listItems).swap(m_listItems);

将再次收缩 m_listItems:http://www.gotw.ca/gotw/054.htm (赫伯萨特)

如果你想清除它,用一个空 vector 交换:

vector<Item>().swap(m_listItems);

这当然更有效率。 (请注意,交换 vector 基本上意味着只交换两个指针。没有什么真正耗时的事情)

关于c++ - 更改 C++ vector 的保留内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/319292/

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