您的位置:首页 > 理论基础 > 数据结构算法

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

2016-05-25 23:47 621 查看

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 查找与去重


                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: