0001 template <typename T> void Vector<T>::uniquify() { //有序向量去重算法(高效版) 0002 if (_size < 2) return; //元素太少,必无重复 0003 Rank i = 0; //前缀[0,i]包含目前已知的所有无重元素 0004 for (Rank j = 1; j < _size; j++) //逐一考查[j] 0005 if (_elem[i] != _elem[j]) //不等,当且仅当[j]为一个区间的首元素 0006 _elem[++i] = _elem[j]; //故将[j]归入无重的前缀 0007 _size = ++i; shrink(); 0008 } //无论如何,运行时间不超过O(n)