vector

Małgorzata Piekarska

Wykorzystanie vectora w programach przychodzi do głowy najczęściej. Szablon klasy vector jest tablicą o zmiennym rozmiarze. To po prostu dynamicznie alokowana tablica opakowana w odpowiednią klasę zwiększającą wygodę użytkowania. Aby skorzystać z tej klasy, musimy wpierw dołączyć odpowiedni plik nagłówkowy. Jest to zresztą charakterystyczne dla dowolnego pojemnika STL i całego języka C++. Wymagany nagłówek nazywa się vector:

#include <vector>
using namespace std;

vector może przechowywać elementy dowolnego, określonego przy deklaracji typu, oczywiście jeden wektor może przechowywać elementy tylko jednego typu.

vector<int> v;

Przykład zastosowania vectora

for(int i=0; i<5;i++)
    v.push_back(i);
printf("rozmiar v : %d",v.size());

for(int i=0; i<5;i++) v.push_back(i);
    printf("%d ",v[i]);

vector<int>::iterator it=v.begin();
while (it!=v.end()) 
    {
        printf("%d ",*it);
        it++;
    }

Poniżej lista najważniejszych metod / operatorów umożliwiających swobodne operacje na vectorach:

  • vector<T> v; - deklaracja wektora o typie danych "T"
  • empty() - zwraca True jeśli pusty
  • size() - liczba elementów
  • resize(n, t=T()) - dopasowuje odpowiednio usuwając lub dodając elementy w vectorze tak aby jego rozmiar wynosił "n"
  • max_size() - ustala maksymalną możliwą ilość elementów w vectorze
  • erase() lub clear()- usuwa wszystkie wartości
  • = operator podstawienia jednego vectora do drugiego
  • <, == operator porówania dwóch vectorów
  • front() lub v[0]- pierszy element
  • back() - ostatni element
  • push_back(const T& value) - dodaje element na końcu
  • pop_back() - usuwa ostatni element
  • assign(size_type n,const T& t) - przydziela "n" pierwszych elementów wartość "t"
  • insert(iterator, const T& t) - wstawia przy elemencie "iterator" wartość "t"
  • swap(vector& v2) - zamienia zawartość dwóch vectorów
  • begin() - zwraca iterator pierwszego elementu z vectora
  • end() - wskaźnik na koniec vectora.
O ile nie zaznaczono inaczej, treść tej strony objęta jest licencją Creative Commons Attribution-ShareAlike 3.0 License