本文介绍了更改C ++向量的保留内存的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个具有1000个节点的向量
I have a vector with 1000 "nodes"
if(count + 1 > m_listItems.capacity())
m_listItems.reserve(count + 100);
问题是我也要清除它,当我要重新填充它。
The problem is I also clear it out when I'm about to refill it.
m_listItems.clear();
容量不变。
我使用了resize(1);但这似乎没有改变容量。
那么如何更改储备?
The capacity doesn't change. I've used the resize(1); but that doesn't seem to alter the capacity. So how does one change the reserve?
推荐答案
vector<Item>(m_listItems).swap(m_listItems);
将再次收缩 m_listItems
:(Herb Sutter)
will shrink m_listItems
again: http://www.gotw.ca/gotw/054.htm (Herb Sutter)
如果你想要清除它,用一个空向量交换:
If you want to clear it anyway, swap with an empty vector:
vector<Item>().swap(m_listItems);
这当然是更有效率。 (注意,交换向量基本上意味着只是交换两个指针)没有什么真的很费时间)
which of course is way more efficient. (Note that swapping vectors basicially means just swapping two pointers. Nothing really time consuming going on)
这篇关于更改C ++向量的保留内存的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!