123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
#ifndef NVECTOR_H #define NVECTOR_H #include <cstdlib> using namespace std; const unsigned DEFAULT_SIZE = 5; template <class Temp> class nVector { public: nVector(){create(DEFAULT_SIZE);}; nVector(unsigned i){create(i);}; unsigned size(); void push_back(Temp _Member_M); void pop_back(Temp _Member_M); void at(Temp _Member_M); Temp *begin(); Temp *end(); void clear(); Temp operator[](int i); private: Temp *reSize(unsigned newSize); bool create(unsigned i); int vector_Dimension; unsigned new_Dimension; Temp *array; }; template <class Temp> unsigned nVector<Temp>::size() { return vector_Dimension; } template <class Temp> unsigned nVector<Temp>::at(Temp element) { return (*this)[Temp]; } template <class Temp> void nVector<Temp>::pop_back(Temp element) { --vector_Dimension; } template <class Temp> void nVector<Temp>::push_back(Temp element) { if (new_Dimension <= (float)vector_Dimension) reSize((unsigned)((vector_Dimension * 2) + 1)); *end() = element; vector_Dimension++; } template <class Temp> Temp *nVector<Temp>::begin() { return array; } template <class Temp> Temp *nVector<Temp>::end() { return array + vector_Dimension; } template <class Temp> void nVector<Temp>::clear() { delete [] array; array == NULL; new_Dimension = 0; vector_Dimension = 0; } template <class Temp> Temp nVector<Temp>::operator[](int i) { return *(array + i); } template <class Temp> Temp *nVector<Temp>::reSize(unsigned Temp_Dimension) { Temp *newArray = new Temp[(unsigned)Temp_Dimension]; Temp *fromPtr = begin(); Temp *toPtr = newArray; while(fromPtr != end()) { *(toPtr++) = *(fromPtr++); } delete [] array; array = newArray; new_Dimension = Temp_Dimension; } template <class Temp> bool nVector<Temp>::create(unsigned i) { array = new Temp[i]; if(array == NULL) return false; new_Dimension = i; vector_Dimension = 0; return true; } #endif
123
template <class Temp> unsigned nVector<Temp>::at(Temp element) { return (*this)[Temp]; }
element
Temp
int
12
unsigned nVector<int>::at(int element) { return (*this)[int]; }
unsigned nVector<int>::at(int element) { return (*this)[element]; }
123456789101112131415161718192021222324252627282930
class nVector { public: nVector() { create(DEFAULT_SIZE); }; nVector(int i) { create(i); }; int size(); void push_back(int); void pop_back(int); void at(int); int *begin(); int *end(); void clear(); int operator[](int i); private: int *reSize(int newSize); bool create(int i); int vector_Dimension; int new_Dimension; int *array; };
void nVector::at(int) { return array; }
12345678
void print(nVector & a) { cout<<"Elements inside the vectors are:"<<endl; for(int i=0; i<a.size(); i++) cout<< a[i] << " "; cout << endl; cout << "----------------"<<endl; }
Temp at(int i);
Temp at(int i) const;
const nVector & a