码迷,mamicode.com
首页 > 其他好文 > 详细

Effective STL: 使用reserve来避免不必要的内存分配

时间:2014-09-16 00:26:59      阅读:243      评论:0      收藏:0      [点我收藏+]

标签:style   color   os   使用   ar   strong   for   数据   div   

使用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来避免不必要的内存分配

标签:style   color   os   使用   ar   strong   for   数据   div   

原文地址:http://blog.csdn.net/wzzfeitian/article/details/39300239

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!