#include<iostream> #include<stdlib.h> #include<stdio.h> using namespace std; typedef int DataType; #define DEFAULT_INC 9 #define DEFAULT_CAPACITY 7 class SeqList { public: friend ostream& operator<<(ostream& os, const SeqList& s); SeqList(int capacity = DEFAULT_CAPACITY) :_capacity(capacity) , _size(0) , _pdata(0) { _pdata = new DataType[capacity];; } SeqList(const SeqList& s) :_size(s._size) , _capacity(s._capacity) { _pdata = new DataType[_capacity]; memcpy(_pdata, s._pdata, _size*sizeof (DataType)); } void PushBack( const DataType& d) { _CheckCapacity(); _pdata[_size++] = d; } void PushFront( const DataType& d) { _CheckCapacity(); int start = _size - 1; while (start >= 0) { _pdata[start + 1] = _pdata[start]; start--; } _pdata[0] = d; _size++; } SeqList& operator=(const SeqList& s) { if (this != &s) { delete[] _pdata; _pdata = new DataType[s._capacity]; memcpy(_pdata, s._pdata, s._size*sizeof (DataType)); _size = s._size; _capacity = s._capacity; } return *this; } ~SeqList() { if (_pdata != NULL) { delete[]_pdata; } } public: void _CheckCapacity() { if (_size == _capacity) { DataType* tmp = new DataType[_capacity +DEFAULT_INC]; memcpy(tmp, _pdata, _size*sizeof(DataType)); delete[] _pdata; _pdata = tmp; _capacity = _capacity + DEFAULT_INC; } } private: DataType* _pdata; int _size;//当前有多少数据 int _capacity;//容量 }; ostream& operator<<(ostream& os, const SeqList& s) { int i = 0; for (i = 0; i < s._size; i++) { os << s._pdata[i] << " "; } os << endl; return os; } int main() { SeqList seqlist1; seqlist1.PushBack(1); seqlist1.PushBack(2); seqlist1.PushBack(3); seqlist1.PushBack(4); seqlist1.PushBack(5); seqlist1.PushBack(6); seqlist1.PushBack(7); seqlist1.PushBack(8); cout << seqlist1; SeqList seqlist2(seqlist1); cout << seqlist2; SeqList seqlist3; seqlist3 = seqlist2; cout << seqlist3; system("pause"); return 0; }
原文:http://lk123456.blog.51cto.com/10831443/1750685