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