STL-Vector内存管理
发布时间
阅读量:
阅读量
vector可被视作一种动态数组结构,其内存空间具有连续性,并具备如下特征:
(1) 在vector中,size用于标识当前存储的数据元素个数,而capacity则表示该容器当前所能容纳的最大数据量,即已分配的内存空间。
(2) 对于释放(pop_back)、删除(erase)以及清空(clear)等操作而言,它们仅会对size的值产生影响,而不会对capacity造成任何改变。唯有当vector对象被销毁时,其所占用的内存才会被彻底清除。
(3) 当执行追加(push_back)、插入(insert)等操作导致vector需要扩展容量时,将依据以下规则进行处理。(vs2013环境下Vector源码所采用的标准)
size_type _Grow_to(size_type _Count) const
{ // grow by 50% or at least to _Count
size_type _Capacity = capacity();
_Capacity = max_size() - _Capacity / 2 < _Capacity
? 0 : _Capacity + _Capacity / 2; // try to grow by 5
全部评论 (0)
还没有任何评论哟~
