#Lab 3 - Kontenery i adaptery
Na dzisiejszy kod początkowy składa się klasa Slav i częściowo uzupełniony już plik main.cpp. Klasa Slav opisuje abstrakcję Słowianina/Słowianki, w konstruktorze domyślnym przypisując mu imię (dostępne za pośrednictwem funkcji name()) i unikalny numer identyfikacyjny (id()). Ma ona również funkcję description(), która pozwoli nam łatwo wykorzystywać cout do wyświetlania informacji o obiektach tej klasy.
Funkcja main() pobiera z wiersza poleceń liczbę n i tworzy dynamiczną n * 2 elementową tablicę obiektów klasy Slav. Czyli po prostu parzystą liczbę Słowian.
Państwa zadaniem będzie użycie utworzonych w ten sposób obiektów do zaludniania poszczególnych kontenerów i adapterów. Są one już zadeklarowane, na początku funkcji containers() i adapters(). Proszę zwrócić uwagę, że w każdym z nich przechowujemy jedynie wskaźniki na obiekty, a nie ich kopie. I właśnie na wskaźnikach będziemy operować.
Po każdej zadanej operacji (w komentarzach są wprost zaznaczone miejsca, w których należy je implementować) wywołujemy makra do raportowania liczby elementów w każdym z kontenerów i liczby obiektów klasy Slav, rezydujących w pamięci. Efekt ich pracy wygląda jak poniżej.
[vector_size = 0, set_size = 0, map_size = 0, existingSlavs = 6]
Aby zadanie było wykonane poprawnie, ostatnia z wartości (existingSlavs) nie może zmienić się przez cały czas pracy programu, a makro to pozwala Państwu na łatwą weryfikację tego, czy kolejny krok implementacji został wykonany dobrze.
Powodzenia!
Wewnątrz funkcji containers():
- Umieść Słowian w losowej kolejności w wektorze,
- Wykorzystując iterator i funkcję
description(), wyświetl wszystkich Słowian w wektorze, - Przenieś wszystkich Słowian z wektoru do zbioru,
- Stwórz słownik tworzący pary Słowian, z tych znajdujących się w zbiorze, czyszcząc zbiór,
- Wykorzystując iterator, wyświetl wszystkie pary Słowian.
Wewnątrz funkcji adapters():
- Umieść Słowian w kolejce.
- Przenieś Słowian z kolejki do stosu.
- Wyświetl Słowian zdejmowanych ze stosu.
Uzupełnij klasę Slav o metodę rozpoznającą płeć Słowianina/Słowianki, zwracając ją jako enum. Stwórz słownik (map) zwracający tablicę (vector) wskaźników na wszystkich mężczyzn, gdy podamy mu klucz odpowiadający mężczyźnie i tablicę wszystkich kobiet, gdy podamy mu klucz odpowiadający kobiecie.
Wyjaśnij, co dzieje się w 21 linijce pliku Slav.cpp. Jak nazywa się ten proces?