我有一个包含1000个节点的向量
if(count + 1 > m_listItems.capacity())
m_listItems.reserve(count + 100);
问题是当我准备重新填充时,我也会将其清空。
m_listItems.clear();
容量不会改变。 我使用了resize(1);但似乎没有改变容量。 那么如何更改预留空间?
我有一个包含1000个节点的向量
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(Herb Sutter)
如果您仍想清除它,请与空向量交换:
vector<Item>().swap(m_listItems);
当然,这样做效率要高得多。(请注意,交换向量基本上只意味着交换两个指针,没有什么耗时的操作。)
std::vector<foo> v(1000); // Create a vector with capacity for 1000 elements
您可以使用swap
函数将其与具有所需容量的新向量交换。
vector< int > tmp;
old.swap( tmp );