力为的技术博客

联系 聚合 管理
  154 Posts :: 1 Stories :: 561 Comments :: 0 Trackbacks
std::vector的reserve和resize的区别
1. reserve: 分配空间,更改capacity但不改变size
2. resize: 分配空间,更改capacity也改变size
这两条初始学STL就记住的。

分析下以下小程序的运行结果:

   {
      std::vector
<int> vec;
      vec.reserve(
100);
      std::cout 
<< vec.capacity() << std::endl;
      vec.resize(
100);
      std::cout 
<< vec.capacity() << std::endl;
   }

   
{
      std::vector
<int> vec;
      vec.reserve(
100);
      std::cout 
<< vec.capacity() << std::endl;
      vec.resize(
50);
      std::cout 
<< vec.capacity() << std::endl;
   }

   
{
      std::vector
<int> vec;
      vec.resize(
100);
      std::cout 
<< vec.capacity() << std::endl;
      vec.push_back(
1);
      std::cout 
<< vec.capacity() << std::endl;
   }


结论:
如果知道vector的大小,resize一下可以当数组来用,不会分配多余的内存。
posted on 2011-03-17 20:18 力为 阅读(3722) 评论(1)  编辑 收藏 引用 所属分类: 4. C++ FAQ

评论

# re: reserve和resize[未登录] 2011-03-18 16:10 剑孤寒
如果知道vector的大小应该在构造函数里指定vector的大小,不要resize,这个函数如果不明白内部的实现最好少用,经常搞出很隐蔽的bug  回复  更多评论
  


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理