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

Usunięta treść Dodana treść
Lethern (dyskusja | edycje)
Lethern (dyskusja | edycje)
zintegrowanie informacji z końca z akapitem
Linia 30:
 
Jeśli zależy nam na szybkości działania, powinniśmy zarezerwować przy pomocy odpowiedniego konstruktora pamięć na pewną ilość elementów. Przykładowo, jeśli wiemy że w tablicy będzie około 50 elementów, możemy konstruować wektor o wielkości 50, dzięki czemu unikniemy kilku kopiowań całej tablicy podczas dodawania elementów. Warto też szukać złotego środka, aby przypadkiem nie marnować pamięci. Na przykład, aby nie stworzyć wektora o rozmiarze 100, jeśli dodane do niego będą tylko 2 elementy.
 
Ręczne zarezerwowanie pamięci dla wektora jest możliwe dzięki metodzie <tt>reserve(size_t n)</tt>, natomiast metoda <tt>capacity()</tt> zwróci nam wielkość aktualnie zarezerwowanego miejsca.
 
Ponieważ kopiowanie tablicy jest powolnym procesem, w przypadku tablicy dużych struktur, na przykład klas, warto zastanowić się nad utworzeniem tablicy wskaźników na te struktury.
 
==Metody==
Linia 110 ⟶ 114:
| zwraca odwrócony iterator do ostatniego elementu
|}
 
{{Uwaga|Przenoszenie wektora w pamięci spowodowane przekroczeniem capacity() jest powolnym procesem, zwłaszcza przy dużych wektorach. Jeśli to możliwe, należy przed przystąpieniem do korzystania z wektora, zarezerwować metodą reserve(size_t n) ilość elementów, która powinna wystarczyć. Często jednak jest to nieuniknione, więc należy starać się o przechowywanie jak najmniejszych elementów (np. zamiast obszernych obiektów, przechowywać w wektorze same wskaźniki na nie). Po przeniesieniu wektora w pamięci wszystkie elementy posiadają inny adres, dlatego nie należy wskazywać na nie wskaźnikami, gdyż mogą stracić ważność.}}
 
<noinclude>{{Nawigacja|C++|