数据结构(C++)—— 向量(Vector)

来源:互联网 发布:中日高铁争夺战 知乎 编辑:程序博客网 时间:2024/05/16 17:46

1. 动态内存管理

1.1 扩容

template <typename T> void Vector<T>::expand(){    if (_size < _capacity) return;    if (_capacity < DEFAULT_CAPACITY) _capacity = DEFAULT_CAPACITY;    T *oldElem = _elem;    _elem = new T[_capacity*=2];    for (int i = 0; i < _size; _elem[i] = oldElem[i++]);    delete [] oldElem;}

1.2 缩容

template <typename T>void Vector<T>::shrink(){    if (_capacity < DEFAULT_CAPACITY << 1) return;    if (_size << 2 > _capacity) return;    T *oldElem = _elem;    _elem = new T[_capacity >>= 1];    for (int i = 0; i < _size; ++i){        _elem[i] =  oldElem[i];    }    delete [] oldElem;}

1.3 删除区间

template <typename T>int Vector<T>::remove(Rank lo, Rank hi){    if (lo == hi) return 0;    while (hi < _size){        _elem[lo++] = _elem[hi++];    }    _size = lo;    shrink();    return hi - lo;}

1.4 查找与去重

0 0
原创粉丝点击