namespace tvector { const int defaultsize = 10; template class vector { public: vector(unsigned int=defaultsize); ~vector(); unsigned int push_back(Type); Type operator[](unsigned int); unsigned int size() { return next; } private: unsigned int datasize; unsigned int next; Type *data; void inflate(const unsigned int increase); }; template vector::vector(unsigned int s) { datasize = s; data = new Type[datasize]; if (data == NULL) { exit(-1); // should throw(); } next = 0; } template vector::~vector() { if(!data) return; delete []data; } template unsigned int vector::push_back(Type element) { if (next >= datasize) inflate(defaultsize); data[next++] = element; return(next - 1); // index number } template Type vector::operator[](unsigned int index) { if(index >= next || index < 0) return 0; // out of bounds - should throw() return data[index]; } template void vector::inflate(unsigned int increase) { datasize += increase; Type *tmp = new Type[datasize]; if (tmp == NULL) { exit(-1); // should throw(); } for (unsigned int i=0; i