首页 > 代码库 > Effective STL: 使用reserve来避免不必要的内存分配
Effective STL: 使用reserve来避免不必要的内存分配
使用reserve来避免不必要的内存分配
- 当确切或大约知道有多少元素将最后出现在容器中
vector<int> v;
// 如果此处不用reserve来先出发内存分配,下面的循环会出现多次内存的重新分配(涉及到分配、回收、拷贝、析构等耗费昂贵的动作)
v.reserve(1000);
for (int i = 1; i <= 1000; ++i)
{
v.push_back(i);
}
- 保留你可能需要的最大的空间,然后,一旦你添加完全部数据,修整掉任何多余的容量(可以考虑
用swap来修整过剩容量
给出的方法)
在大小和容量之间的关系让我们可以预言什么时候插入将引起vector或string执行重新分配
string s;
...
if (s.size() < s.capacity())
{
// push_back不会使指向这个string中的迭代器、指针或引用失效,因为string的容量保证大于它的大小
s.push_back(‘x‘);
}
Effective STL: 使用reserve来避免不必要的内存分配
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。