#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?