Jeżeli jesteś początkujący, to Twoje rozwiązanie jest całkiem niezłe. No ale mam dość sporo zastrzeżeń i uwag:
1. Chyba nie rozumiesz na czym polega działanie wektora. Twoje rozwiązanie jest powolne, gdyż przy każdej operacji push/pop usuwasz starą tablicę i alokujesz o jeden element większą/mniejszą. Wektor ma to do siebie, że alokuje więcej pamięci niż potrzebuje tego użytkownik, aby operacje push/pop nie były czasochłonne. Np. Twój wektor ma 9 elementów, ale pamięć którą zarezerwował starczy na 16. Dopiero później dokonuje realokacji (tworzy i inicjalizuje nową tablicę, zwalnia starą) i znowu rezerwuje więcej miejsca niż potrzbuje.
2. Radziłbym zapoznać Ci się z tym, czym tak naprawdę jest konterener w C++. Otóż jest to klasa, która spełnia tzw. wymagania kontenera: http://en.cppreference.com/w/cpp/concept/Container. Chyba żadna z funkcji składowych nie pasuje do tych wymagań. Nie ma podstawowych rzeczy: konstruktora kopiującego/przenoszącego, funkcji begin/end, swapa czy operatorów porównania.
3. Wektor jest także kontenerem sekwencyjnym. Proszę tu wymagania: http://en.cppreference.com/w/cpp/concept/SequenceContainer.
4. W standardowej bibliotece wektor spełnia jeszcze te wymagania dotyczące kontenerów: http://en.cppreference.com/w/cpp/concept/ReversibleContainer http://en.cppreference.com/w/cpp/concept/AllocatorAwareContainer.
5. Nazwę funkcji pushBack zmień na push_back. Twój kontener będzie mógł wówczas współpracować z obiektami klasy std::back_inserter_iterator: http://en.cppreference.com/w/cpp/iterator/back_insert_iterator
6. Kluczowe (jak dla mnie) są funkcje begin/end. Umożliwiają one wiele ciekawych rzeczy takie jak na przykład pętla foreach:
amadi::wektor<int> integers;
// ...
for(int& value : integers) {
value += 10;
}
7. Iterator to może być zwykły wskaźnik. Jeżeli jednak chce Ci się budować jego klasę to pamiętaj o odpowiednich wymaganiach: http://en.cppreference.com/w/cpp/concept/RandomAccessIterator
8. Obsługi błędów nie potrzeba, chociaż mógłbyś zrobić np. funkcję at, która sprawdza czy podany indeks jest prawidłowy (nieujemny i niewykraczający poza granicę kontenera).
9. Co do implementacji to najlepiej użyć 3 wskaźników wskazujących na: początek kontenera, element za ostatnim elementem kontenera, element za ostatnim fragmentem zarezerwowanej przez wektor pamięci.
Pozdrawiam!