Historia wymaga pasterzy, nie rzeźników.

Prezentowany program pokazuje sposób tworzenia obiektu szablonu
vector. W programie tworzymy wektor (obiekt szablonu vector) liczb
całkowitych, wprowadzimy pięć liczb całkowitych przy pomocy klawiatury, a
następnie program wyświetli wprowadzone liczby. Należy przypomnieć, że
klasa vector obsługuje tablice dynamiczne, w miarę potrzeby rozmiar kontenera
(tablicy) będzie powiększany. Specyfikacja szablonu dla klasy vector ma
postać:

template <class T, class Allocator = allocator<T>> class vector

W tej specyfikacji T oznacza typ, jaki chcemy zaimplementować, Allocator
oznacza alokator (alokator jest obiektem klasy allocator, służącym do
zarządzania pamięcią), domyślną wartością jest alokator standardowy.
W celu utworzenia obiektu klasy vector musimy dołączyć plik vector oraz
zadeklarować kolekcję (obiekt szablonu vector), co w praktyce sprowadza się
do naśladowania posługiwania się zwykłymi szablonami klas.

Wydruk 1.1. Przykład użycia wzorca vector, typ int
#include <iostream>
#include <vector>
#include <conio.h>
using namespace std;
const int ILE = 5 ;
int main()
{ vector<int>liczby(ILE);
for (int i=0; i < ILE; i++)
{ cout << "liczba " << i+1 << " = " ;
cin >> liczby[i];
}
cout << "wprowadzono liczby : " << endl;
for (int i=0; i < ILE; i++) cout << liczby[i] << " " ;
getche();
return 0;
}

Wprowadzenie do STL

7 Po uruchomieniu programu mamy następujący wydruk:

liczba 1 = 1
liczba 2 = 3
liczba 3 = 5
liczba 4 = 7
liczba 5 = 9
wprowadzono liczby :
1 3 5 7 9

Plik nagłówkowy potrzebny do obsługi wektorów dołączamy poleceniem :

#include <vector>

Deklarując kolekcję (wektor, obiekt szablonu vector) musimy określić typ
elementów:

vector < int > liczby( ILE );

Został utworzony konkretny rodzaj kontenera, w tym przypadku jest to
wektor o nazwie liczby, którego elementy są typu int, kontener może
początkowo posiadać 5 elementów (zmienna ILE). Jak widać, pominięto drugi
argument (alokator) w deklaracji szablonu klasy. W takim przypadku szablon
kontenera użyje domyślnie klasy allocator<T> . Klasa ta zarządza dynamicznie
pamięcią, wykorzysta w zwykły sposób operatory new i delete.
Wektor liczby jest inicjalizowany liczbami całkowitymi wprowadzonymi z
klawiatury. Zastosowano klasyczną składnie operacji na tablicach,
wykorzystując indeksy. W następującym fragmencie programu trudno
zorientować się, że obsługujemy obiekty klasy vector a nie zwykłe tablice:

for (int i=0; i < ILE; i++)

{ cout << "liczba " << i+1 << " = " ;
cin >> liczby[i];
}

Główną zaletą biblioteki STL jest fakt, że nie musimy zajmować się
szczegółami implementacji struktur danych i zarządzaniem pamięcią podczas
przetwarzania kolekcji. W kolejnym przykładzie utworzymy obiekt vector dla
typu string.

Wydruk 1.2. Przykład użycia wzorca vector, typ string
#include <iostream>
#include <vector>
8
1. Wiadomości wstępne

#include <string>
#include <conio.h>
using namespace std;
const int ILE = 5 ;

int main()
{ vector<string> imiona(ILE);
// wektor typu string
for (int i=0; i < ILE; i++)
{ cout << "imie " << i+1 << " = " ;
getline(cin, imiona[i]);
}
cout << "wprowadzono napisy : " << endl;
for (int i=0; i < ILE; i++)
cout << " " << imiona[i] << endl ;
getche();
return 0;
}

Wydruk z programu ma następującą postać:

imie 1 = Ala
imie 2 = Ola
imie 3 = Ziuta
imie 4 = Buba
imie 5 = Lola
wprowadzono napisy :
Ala
Ola
Ziuta
Buba

Lola

W programie, aby utworzyć kolekcję imion (typ string) musimy włączyć dwa
pliki:



#include <vector>
#include <string>

Definicja wektora napisów ma postać: