動態表的模板是STL庫中最經常使用的數據結構,其代碼以下:數據結構
template <class T> class SeqList { public: SeqList() :_array(new T [3]), _size(0), _capacity(3) { memset(_array,0,sizeof(T)*3); } SeqList(const T &x) :_array(new T[3]), _size(1), _capacity(0) { _array[0] = x; } SeqList(const SeqList & x) { _array = new T[x._size]; memcpy(_array, x._array, sizeof(T)*x._size); _capacity = x._size; _size = _capacity; } void PushBack(const T & x) { _CheckCapacity(); _array[_size++] = x; } SeqList & operator = (SeqList l) { swap(_array, l._array); swap(_size, l._size); swap(_capacity, l._capacity); return *this; } ~SeqList() { if (_array) { delete[] _array; } } private: void _CheckCapacity() { if (_size >= _capacity) { _capacity *= 3; T * tmp = new T [_capacity]; memcpy(tmp, _array, sizeof(T)*_capacity); delete[] _array; _array = tmp; } } T *_array; size_t _size; size_t _capacity; };
這裏當咱們用模板演化成用戶自定義類型時會出現什麼狀況呢?- -。明天告訴你
ide