vector 对象是如何增长的
当不得不获取新的内存空间时,vector
和 string
的实现通常会分配比新的空间需求更大的内存空间。容器预留这些内存空间,可用来保存更多的新元素,这样就不需要每次添加新的元素都重新分配容器的内存空间了。
管理容量的成员函数
reverse
并不改变容器中元素的数量,它仅影响 vector
预先分配多大的内存空间。
只有当需要的内存空间超过当前的容量时,reverse
调用才会改变vector的容量。
如果需求小于或等于当前容量,reverse
什么也不做,特别是,当需求大小小于当前容量时,容器不会回退你内存空间。
也就是说 reverse
永远不会较少容器占用的内存空间,类似的 resize
函数只改变容器中元素的数目,而不是容器的容量。
在新标准中,可以使用 shrink_to_fit
来要求 deque
、vector
、string
退回不需要的内存空间,但是具体的实现可能忽略此请求。
capacity 和 size
容器的 size
表示当前已经保存的元素的数目。
容器的 capacity
表示不需要重新分配内存的前提下,它最多可以保存的元素数量。
capacity
至少与 size
一样大。