0001 template <typename T> //0 <= r < size 0002 T Vector<T>::remove(Rank r) { //删除向量中秩为r的元素 0003 T e = _elem[r]; //备份被删除元素 0004 remove(r, r+1); //调用区间删除算法,等效于对区间[r,r+1)的删除 0005 return e; //返回被删除元素 0006 } //remove 0007 0008 template <typename T> //0 <= lo <= hi <= n 0009 void Vector<T>::remove(Rank lo, Rank hi) { 0010 while (hi < _size) //后缀:自前向后地前移 0011 _elem[lo++] = _elem[hi++]; //O(n-hi) 0012 _size = lo; shrink(); //更新规模,可能缩容 0013 } //remove, O(n-hi):正比于后缀长度,而与hi-lo无关