C++/Vector: Różnice pomiędzy wersjami

Usunięta treść Dodana treść
Lethern (dyskusja | edycje)
Nie podano opisu zmian
Lethern (dyskusja | edycje)
→‎Metody: rozdzielenie tabelki, uzup.
Linia 51:
Lista metod klasy vector. Użyte słowo <tt>iterator</tt> zastępuje poprawne <tt>vector<T>::iterator</tt>, podmienione zostało dla zwiększenia czytelności.
 
=== Modyfikacja ===
{| class="wikitable"
! prototyp
! opis działania
! złożoność czasowa
|----
| void swap(vector<T>& vec)
| zamienia zawartości dwóch wektorów miejscami (wykonywane szybko, w stałym czasie)
| stała
|----
| size_t size()
| zwraca obecną ilość elementów wektora.
|----
| size_t capacity()
| zwraca ilość elementów, którą wektor jest w stanie pomieścić przed przeniesieniem go do większego obszaru pamięci.
|----
| size_t max_size()
| zwraca ilość elementów, którą maksymalnie może pomieścić wektor
|----
| bool empty()
| zwraca true jeśli wektor nie przechowuje żadnych zmiennych
|----
| void reserve(size_t n)
| rezerwuje pamięć na n elementów, co zapobiega przenoszeniu wektora w pamięci przed osiągnięciem tej liczby
|----
| void resize(size_t n, T obj)
| zmienia rozmiar wektora do n; jeśli jest większy od obecnego, dodawane są nowe elementy będące kopiami obj
|----
| void resize(size_t n)
| zmienia rozmiar wektora do n; jeśli jest większy od obecnego, dodawane są nowe elementy o przypadkowych wartościach
|----
| void push_back(const T obj)
| dodaje na końcu wektora kopię przekazanego argumentu
| stała, czasem liniowa*
|----
| void pop_back()
| usuwa ostatni element z wektora (wykonywane w stałym czasie)
| stała
|----
| void clear()
| usuwa wszystkie elementy z wektora
| liniowa (destruktory)
|----
| void assign(size_t n, const T obj)
| czyści wektor i wypełnia go ''n'' kopiami argumentu ''obj''
| liniowa
|----
| void assign(iterator poczatek, iterator koniec)
| czyści wektor i wypełnia go elementami z innego wektora z przedziału <poczatek;koniec>
| liniowa
|----
| iterator insert(iterator pos, T obj)
| wstawia element obj '''przed''' wskazywaną przez iterator ''pos'' pozycją i zwraca iterator do dostawionego elementu (powolna funkcja)
| liniowa (przenoszenie części elementów)
|----
| void insert(iterator pos, size_t n, const T obj)
| wstawia ''n'' kopii argumentu obj '''przed''' pozycją wskazywaną przez iterator ''pos''
| jw.
|----
| void insert(iterator pos, iterator poczatek, iterator koniec)
| wstawia '''przed''' pozycją wskazywaną przez iterator pos elementy między iteratorami początek i koniec (włącznie)
| jw.**
|----
| iterator erase(iterator pos)
| usuwa element wskazywany przez pos i zwraca iterator do następnego elementu
| liniowa (destruktory)
|----
| iterator erase(iterator poczatek, iterator koniec)
| usuwa elementy z przedziału <poczatek;koniec> i zwraca iterator do elementu za nimi
| jw + przenoszenie elementów za ''końcem''
|}
* może występować kopiowanie wektora, gdy rozmiar jest zbyt mały
** w rzadkim przypadku (dla iteratorów typu Input, Output) złożoność bliższa kwadratowej
 
=== Dostęp ===
{| class="wikitable"
! prototyp
! opis działania
|----
| T& front()
Linia 126:
| iterator rend()
| zwraca odwrócony iterator do ostatniego elementu
|}
 
=== Inne ===
{| class="wikitable"
! prototyp
! opis działania
|----
| size_t size()
| zwraca obecną ilość elementów wektora.
|----
| size_t capacity()
| zwraca ilość elementów, którą wektor jest w stanie pomieścić przed przeniesieniem go do większego obszaru pamięci.
|----
| size_t max_size()
| zwraca ilość elementów, którą maksymalnie może pomieścić wektor
|----
| bool empty()
| zwraca true jeśli wektor nie przechowuje żadnych zmiennych
|----
| void reserve(size_t n)
| rezerwuje pamięć na n elementów, co zapobiega przenoszeniu wektora w pamięci przed osiągnięciem tej liczby
|----
| void resize(size_t n, T obj)
| zmienia rozmiar wektora do n; jeśli jest większy od obecnego, dodawane są nowe elementy będące kopiami obj
|----
| void resize(size_t n)
| zmienia rozmiar wektora do n; jeśli jest większy od obecnego, dodawane są nowe elementy o przypadkowych wartościach
|}