0001 template <typename T> void Vector<T>::shrink() { //装填因子过小时压缩向量所占空间 0002 if (_capa <= DEFAULT_SIZE * 2) return; //不致收缩到太小的容量 0003 if (_size * 4 > _capa) return; //以25%为界 0004 T* oldElem = _elem; _elem = new T[_capa >>= 1]; //容量减半 0005 copy(0, oldElem, 0, _size); //转移数据 0006 delete[] oldElem; //释放原空间 0007 } //shrink