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

标签 c++ memory stl vector resize

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

相关文章:

c++ - 在 Linux 上使用 g++ 运行 clang scan-build

c++ - 根据参数类型获取匹配的重载

背包分支定界的C++实现

c++ - 为什么 std::hash<T> 不专用于 char*?

c++ - boost async_wait 并在绑定(bind)中添加 "this"

memory - 没有 Db 的 DbConnection 使用内存中的 DataSet(或类似的)作为源

c++ - shared_ptr-如何忽略第一个引用?

python - 操作系统如何处理大于内存的 python 字典?

objective-c - 在 iOS 应用程序中使用 STL

c++ - STL 按变量排序,然后按升序排序