《C++ Primer》读书笔记-第九章 04 vector对象增长

作者:马志峰
链接:https://zhuanlan.zhihu.com/p/24455625
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

声明:

  • 文中内容收集整理自《C++ Primer 中文版 (第5版)》,版权归原书所有。
  • 原书有更加详细、精彩的释义,请大家购买正版书籍进行学习。
  • 本文仅作学习交流使用,禁止任何形式的转载

正文

为了支持快速随机访问,vector中的元素是连续存储的(连续的内存空间)

前面提到了,向vector中添加元素,有可能导致整个容器内存空间的重新分配

为了减少容器空间重新分配的次数,每次不得不获取新的内存空间时,都会分配比实际需求更大的内存空间(2倍?)

这一策略保证了vector的扩张操作通常比list和deque还要快

管理容器

c.shrink_to_fit()  
c.capacity()  
c.reserve( n )

capacity 不重新分配内存空间的话,还可以保存多少个元素
reserve 分配至少容纳n个元素的内存空间
shrink_to_fit() 请求将capacity减少为与size相同,但请求可能被忽略,依赖于具体实现

reserve(n),如果n小于实际容量,什么也不做,reserve不会减少容器占用的内存空间
resize 只改变容器中元素的数目,而不是容器的容量

shrink_to_fit 只适用于vector、string和deque

capacity和reserve只适用于vector和string

猜你喜欢

转载自blog.csdn.net/qq_26751117/article/details/53821788
今日推荐