baa*_*h05 5 c++ memory stl resize vector
我有一个1000"节点"的矢量
if(count + 1 > m_listItems.capacity())
m_listItems.reserve(count + 100);
Run Code Online (Sandbox Code Playgroud)
问题是,当我要重新填充它时,我也清楚了.
m_listItems.clear();
Run Code Online (Sandbox Code Playgroud)
容量不会改变.我用过调整大小(1); 但这似乎并没有改变容量.那么如何改变储备呢?
Joh*_*itb 20
vector<Item>(m_listItems).swap(m_listItems);
Run Code Online (Sandbox Code Playgroud)
将m_listItems
再次缩小:http://www.gotw.ca/gotw/054.htm(Herb Sutter)
如果你想要清除它,用空向量交换:
vector<Item>().swap(m_listItems);
Run Code Online (Sandbox Code Playgroud)
这当然更有效率.(请注意,交换向量基本上意味着只交换两个指针.没有什么真正耗费时间)