Ćwiczenie to jest częścią większego zadania, które będzie polegać na zaprojektowaniu szablonów kilku rodzajów klas pojemnikowych z wykorzystaniem mechanizmu dziedziczenia oraz iteratora dla tych klas.
Ćwiczenie 3. polegać będzie na zaprojektowaniu szablonu pojemnika typu wektor.
aghInclude.h
poprzez który włączane są wszystkie niezbędne pliki.aghContainer
), od której będą się wywodzić pozostałe klasy pojemnikowe
dodająca podany jako argument obiekt typu T
do pojemnika.
wstawiająca obiekt typu T
w wybrane miejsce. Zwraca true
jeżeli podane miejsce wstawienia jest prawidłowe, w przeciwnym wypadku zwraca false
.
podmienia obiekt typu T
z obiektem na wybranym miejscu. Zwraca true
jeżeli podane miejsce podmiany jest prawidłowe, w przeciwnym wypadku zwraca false
.
zwraca wartość w pojemniku. Zakładamy że indeksowanie wartości rozpoczynamy od zera.
zwraca ilość elementów w pojemniku.
usuwa element na danym miejscu. Zwraca true
jeżeli podane miejsce usunięcia jest prawidłowe, w przeciwnym wypadku zwraca false
.
usuwa wszystkie elementy pojemnika.
zwraca true
jeżeli pojemnik jest pusty, inaczej false
.
wyszukuje i zwraca indeks pierwszego elementu o wartości _value
zaczynając od elementu _from
. Jeżeli takiego elementu nie ma to zwraca -1
.
zwraca true
jeżeli element o wartości _value
znajduje się w pojemniku inaczej zwraca false
. Wyszukiwanie rozpoczyna się od elelmetnu _from
.
sprawdza czy zawartość pojemników jest taka sama.
sprawdza czy zawartość pojemników jest różna.
[]
:
zwraca element o indeksie n
.
+=
:
dopisuje wszystkie elementy z pojemnika right
i zwraca referencje do this
.
+=
:
dodaje element do pojemnika i zwraca referencje do this
.
«
:
dodaje element do pojemnika i zwraca referencje do this
.
«
:
dopisuje wszystkie elementy z pojemnika right
i zwraca referencje do this
.
«
:
wypisuje zawartość pojemnika na strumień.
aghContainer
) definiujemy wszystkie możliwe do zdefiniowania metody. Zaoszczędzi to sporo czasu w kolejnych ćwiczeniach przy tworzeniu klas pochodnych. Metody których ciało nie może zostać zdefiniowane w klasie abstrakcyjnej to: destruktor, remove
, size
, insert
, at
. Pozostałem metody definiujemy przy pomocy wyżej wymienionych.aghVector
, która będzie dziedziczyć powyższą klasę abstrakcyjną w sposób publiczny. Klasa powinna obsługiwać wszystkie powyższe metody.aghException
.
Plik catch.h
jest to jedna z najlepszych bibliotek do pisania testów kodu w C++. Plik ex3main.cpp
korzysta z niej do testowania dostarczonych implementacji.
Podczas implementacji klasy aghVector
proszę stosować się do, tzw. reguły trzech