I finished my Vector class... I think.
Code:
#include <iostream>
using namespace std;
template <class T>
class myVec
{
T *arrPtr;
T *temp;
int count;
public:
myVec(int numElements);
myVec();
~myVec();
void addOnTop(T value);
void addBegin(T value);
void erase(int index);
void erase(int begin, int end);
int size() { return count; }
bool isEmpty();
void assign(int num, T value);
void resize(int num);
void clear();
void insert(int pos, T value);
T& operator=(const myVec &a);
T& operator[](int index) {if(index > (count-1)) { cout << "Memory overload!!"; } else { return arrPtr[index]; } }
};
template <class T>
myVec<T>::myVec(int numElements)
{
count = numElements;
arrPtr = new T[count];
temp = new T[count];
}
template <class T>
myVec<T>::myVec()
{
count = 0;
arrPtr = new T[count];
temp = new T[count];
}
template <class T>
myVec<T>::~myVec()
{
delete arrPtr;
delete temp;
}
template <class T>
void myVec<T>::addOnTop(T value)
{
temp = new T[count];
for(int i = 0; i < count; i++)
{
temp[i] = arrPtr[i];
}
count++;
arrPtr = new T[count];
for(int i = 0; i < count; i++)
{
arrPtr[i] = temp[i];
}
arrPtr[count-1] = value;
}
template <class T>
void myVec<T>::addBegin(T value)
{
temp = new T[count];
for(int i = 0; i < count; i++)
{
temp[i] = arrPtr[i];
}
count++;
arrPtr = new T[count];
arrPtr[0] = value;
for(int i = 0; i < count; i++)
{
arrPtr[i+1] = temp[i];
}
}
template <class T>
void myVec<T>::erase(int index)
{
temp = new T[count-1];
for(int i = 0; i < index; i++)
{
temp[i] = arrPtr[i];
}
for(int i = (index+1); i < count; i++)
{
temp[i-1] = arrPtr[i];
}
count--;
arrPtr = new T[count];
for(int i = 0; i < count; i++)
{
arrPtr[i] = temp[i];
}
}
template <class T>
void myVec<T>::erase(int begin, int end)
{
int minus = end-begin;
temp = NULL;
temp = new T[count-minus];
for(int i = 0; i < begin; i++)
{
temp[i] = arrPtr[i];
}
for(int i = end; i < count; i++)
{
temp[i-minus] = arrPtr[i];
}
arrPtr = NULL;
count -= minus;
arrPtr = new T[count];
for(int i = 0; i < count; i++)
{
arrPtr[i] = temp[i];
}
}
template <class T>
bool myVec<T>::isEmpty()
{
if(count == 0)
{
return true;
}
else
{
return false;
}
}
template <class T>
T& myVec<T>::operator=(const myVec &a)
{
count = a.count;
arrPtr = new T[count];
for(int i = 0; i < count; i++)
{
arrPtr[i] = a.arrPtr[i];
}
}
template <class T>
void myVec<T>::resize(int num)
{
count = num;
arrPtr = new T[count];
for(int i = 0; i < count; i++)
{
arrPtr[i] = 0;
}
}
template <class T>
void myVec<T>::assign(int num, T value)
{
count = num;
arrPtr = new T[count];
for(int i = 0; i < count; i++)
{
arrPtr[i] = value;
}
}
template <class T>
void myVec<T>::clear()
{
count = 0;
arrPtr = new T[0];
}
template <class T>
void myVec<T>::insert(int pos, T value)
{
temp = new T[count+1];
for(int i = 0; i < pos; i++)
{
temp[i] = arrPtr[i];
}
for(int i = (pos+1); i < count; i++)
{
temp[i-1] = arrPtr[i];
}
count++;
arrPtr = new T[count];
for(int i = 0; i < count; i++)
{
if(i == pos)
arrPtr[i] = value;
else
arrPtr[i] = temp[i];
}
}
What do you think of it?