我有一个包含 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/