Advertisement

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)

还没有任何评论哟~