Wstęp.

Jednym ze składników STL (Standard Template Library – Standardowa Biblioteka Wzorców) są pojemniki – wektory, które oferują przechowywanie obiektów danego typu w liniowym porządku oraz szybki do nich dostęp (random access). W czasie działania programu możemy zwiększać i zmniejszać ilość elementów w nich zawartych, co czyni je bardzo przydatnymi. Wektory mogą być indeksowane jak zwykłe tablice (mojWektor[10] = 2). Posiadają szereg przydatnych funkcji umożliwiających dodawanie nowych obiektów, usuwanie, wstawianie obiektu do środka itp. itd.

Operacje usuwania oraz dodawania na końcu zajmują stały okres czas, podczas gdy wstawianie elementu do środka bądź usuwanie go zajmuje liniowy czas, gdyż pozostałe obiekty muszą być odpowiednio przesunięte. Aby móc korzystać z wektorów, musisz zainclude’ować plik vector:

Wadą wektorów jest to, że nie można pracować na nich korzystając ze wskaźników (ale zamiast nich mamy do dyspozycji iteratory, o których niebawem) tak jak to można było robić używając tablic:

To by było na tyle słowem wstępu ;]

Definiowanie wektorów.

Wektory definiujemy w następujący sposób:

lub

Wektor nazwa będzie pusty, a wektor nazwa2 będzie zawierał podaną liczbę elementów. Wektory indeksowane są od 0, a wartościowane (w tym przypadku) zerami.

Metody.

Do pracy z wektorami mamy do dyspozycji szereg funkcji, oto one:

assign Opróżnia wektor oraz kopiuje do niego wskazane elementy.
at Zwraca referencję do elementu na wskazanym miejscu w wektorze.
back Zwraca referencję do ostatniego elementu w wektorze.
begin Zwraca iterator wskazujący na pierwszy element.
capacity Zwraca wielkość aktualnie zajmowanej przez wektor pamięci.
clear Opróżnia wektor.
empty Sprawdza, czy wektor jest pusty.
end Zwraca iterator który wskazuje na sam koniec wektora (za ostatnim elementem!).
erase Usuwa element bądź elementy od danego miejsca do danego.
front Zwraca referencję do pierwszego elementu w wektorze.
get_allocator Zwraca alokator klasy używany przez wektor.
insert Wstawia element lub kilka elementów do wektora na wskazaną pozycję.
max_size Zwraca maksymalną długość wektora.
pop_back Usuwa ostatnio element wektora.
push_back Dodaje element na końcu wektora.
rbegin Zwraca iterator do pierwszego elementu odwróconego wektora.
rend Zwraca iterator wskazujący zaraz za ostatnim elementem odwróconego wektora.
reserve Rezerwuje podaną wielkość pamięci dla obiektów wektora.
resize Ustala nowy rozmiar wektora. W pierwszym parametrze podajemy nową wielkość wektora, a w drugim wartość nowych elementów (jeśli jej nie podamy, użyta zostanie domyślna wartość). Jeżeli nowa wielkość jest większa od poprzedniej, do wektora dodawane są nowe elementy o wartości takiej, jaką przekazaliśmy w drugim parametrze. Jeżeli nowa wielkość jest mniejsza, to usuwane są końcowe elementy aż osiągnięta będzie odpowiednia wielkość.
size Zwraca ilość elementów w wektorze.
swap Zamienia między sobą elementy dwóch wektorów.
vector Konstruuje wektor o określonej wielkości z elementami o określonej wartości ze specyficznym alokatorem bądź kopią alokatora innego wektora.

Iteratory.

Iteratory służą do pracy na pojemnikach, jak np. na wektorach. Można je przesuwać jak wskaźniki, dzięki czemu stają się bardzo przydatne, gdyż w pracy z pojemnikami nie można używać wskaźników. Do wyboru mamy kilka iteratorów, jak np. iterator oraz reverse_iterator – pierwszy z nich pozwala odczytywać i modyfikować elementy wektora, a drugi pozwala na to samo, tylko, że w odwróconym wektorze. Wartość wskazywanego elementu pozyskujemy za pomocą operatora wyłuskania (*). Występują także wersje iteratorów, które mogą jedynie odczytywać wartości – const_iterator oraz const_reverse_iterator. Iteratory definiujemy w następujący sposób:

Użycie:

Przykład zastosowania.

Prosty przykład pokazujący, jak posługiwać się wektorami:

W załączniku znajdziesz gotowy do uruchomienia powyższy przykład w Visual C++ 6, CodeBlocks 1.0rc2 oraz Dev-C++ 4.9.9.2

Więcej informacji znajdziesz na MSDN:

Wektory

Pozdrawiam

Autor: Iskar

Załączniki