STL vector size and capacity

爱⌒轻易说出口 提交于 2020-01-05 05:27:24

1. size = m_finish-m_start: 表示此时vector中有多少个元素。
2. capacity: m_end_storage-m_start:表示再不重新分配内存的前提下,可以容纳的元素的个数,注意这个数值包含了已经存在的元素个数,即 capacity()-size():表示还有多少个可以push的元素个数在不重新分配的前提内存的前提下。
3. STLport库元素增长是以当前元素的个数*2的倍数来进行分配的。

4. Resize(int n):n表示要resize到的个数.

    如果n<size(),从vector的末尾把size()-n的元素destroy掉(invoke destroy function),使得size()=n。

 如果n>size(),重新分配内存并copy已存的元素,所以会发生iterator失效的问题。

5. Reserve(int n): n表示要预留的元素个数。如果在调用reserve()函数之前已经包含了元素的话,调用reserve()函数中会重新分配内存并copy已存的元素,所以会发生iterator失效的问题。所以最好是在没有任何元素的前提下reserve()函数。在reserve()函数后,size()不变,capacity()==n。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!