Jeśli podczas pisania programu zaistnieje potrzeba utworzenia listy, której długość w trakcie wykonywania programu się zmienia to warto przyjrzeć się klasie vector. Jest to specjalna klasa, która ułatwia tworzenie listy obiektów. Klasa vector należy do standardowej przestrzeni nazw std i można jej używać po dołączeniu biblioteki vector.
W celu utworzenia najprostszego wektora, który może przechowywać obiekty typu int można skorzystać z poniższego kodu:
(1.) Dołączenie biblioteki vector. (4.) Wyszczególnienie, że typ vector należy do przestrzeni std i utworzenie zmiennej o nazwie lista o podanym typie.
Do utworzonego wektora można dodać przy pomocy wywołania funkcji push_back(), które należy wywołać bezpośrednio na samej zmiennej. Jako jedyny argument należy przekazać obiekt o typie, który przechowuje wektor. Poniższy kod dodaje do wcześniej utworzonej zmiennej lista liczby. Funkcja push_back() zawsze dodaje element na końcu wektora.
(1.) Deklaracja zmiennej typu vector przechowującej obiekty typu int, a następnie (2. - 4.) zostaną dodane elementy 1, 2 i 3. Teraz w wektorze kolejno są zapisane elementy {1, 2, 3}.
Ze względu na fakt, że vector ma ułatwiać zadanie zarządzania listą to istnieje możliwość dodawania elementów na określonej pozycji. Służy do tego funkcja insert(), której należy podać dwa argumenty: pozycję w pamięci, gdzie ma być zapisany nowy obiekt oraz wartość, która ma być dodana. Pozycję podaje się względem początku wektora w pamięci, który można uzyskać przy pomocy funkcji begin(). W celu dodanie liczby 4 i 5 po wartości 1 na liście wystarczy dopisać:
(5.) Samo wykorzystanie .begin() wskazuje na pierwszy element na liście tj. element zerowy, dlatego, aby dodać element 4 po 1 należy zwiększyć numer pozycji o 1. (6.) Liczba 5 ma się znajdować po 4 to należy umieścić na pozycji 2, ponieważ na pozycji 1 znajduje się już 4.
Teraz lista ma postać {1, 4, 5, 2, 3} co można sprawdzić wypisując wszystkie wartości znajdującej się na lista. Można to zrobić przy pomocy poniższego kodu:
(7.) Ilość elementów na liście można pobrać wykorzystując funkcję size(). (8.) W celu pobrania i-tego elementu można wykorzystać funkcję at(), która przyjmuje jeden argument określający, który element chcemy pobrać z listy. Elementy z wektora można pobierać też przy pomocy operatora [ ]. Wtedy linijka (8.) miałaby postać:
Do usuwania elementów na liście można wykorzystać funkcję erase(). Przyjmuje ona dwa argumenty, który określa zakres pozycji, które mają zostać usunięte z listy. Oczywiście należy pamiętać, aby przekazać bezpośredni zakres w pamięci poprzez użycie funkcji begin(). Poniższy fragment kodu usunie elementy na pozycjach 2 i 3:
Istnieje również możliwość, aby usunąć wszystkie elementy przechowywane w zmiennej. Najwygodniejszym sposobem jest wykorzystanie funkcji clear():
Powyższy fragment można zapisać również przy pomocy funkcji erase() używając początku i końca wektora w pamięci:
Wszystkie elementy, które się znajdują na liście można ustalić przy pomocy operatora =:
(12.) Lista jest pusta, więc należy dodać element o wartości 3. (13.) Następnie program zastępuje element 3 na 2, a potem (14.) 2 na 1.
Lekcja 13 dobiegła końca. Zajrzyj do kodu źródłowego, aby przeanalizować wypisywanie danych jeszcze raz. Następnie spróbuj wykonać zadania, aby utrwalić materiał.
Napisz program, który wypisze na ekran poniższy wygląd konsoli. W programie nie można wypisać tylko fragmentów listy. Należy przy wypisywaniu wypisać wszystkie elementy na liście.
Efekt końcowy powinien wyglądać tak: