Wektor kontra lista
Często mylące dla programistów, wektory i listy są sekwencjami używanymi w zbiorach tablic w C ++ i Javie. Te dwa terminy przechowują adresy tablic, ale z różnymi metodami przechowywania tablic.
Podstawową rzeczą, którą musimy wiedzieć, jest to, że tablica jest „listą”, która zawiera niektóre lub wszystkie dane, tj. Liczby całkowite, zmiennoprzecinkowe lub znaki i jest zdefiniowana w nawiasach „[]”.
W rzeczywistości wektory i listy działają zgodnie z instancjami. Rzućmy okiem na te dwa terminy jeden po drugim.
Wektory
Wektory są używane do przechowywania tablic i uzyskiwania dostępu do elementów. Tutaj możesz uzyskać dostęp do dowolnego elementu losowo za pomocą operatora „[]”. Dzięki temu można łatwo przejrzeć wszystkie elementy lub jeden konkretny element za pomocą operacji wektorowej. Więc jeśli wstawisz dowolny obiekt na końcu, na początku lub w środku, wektory mają punkt plus, ponieważ możesz uzyskać dostęp do losowego adresu i dokonać tam zmian. Jednak wektory są nieco wolniejsze w porównaniu do obiektów listy. Wektory są uważane za obiekty zsynchronizowane, sprawne w dostępie losowym i prawidłowo przechowują dane z listą synchroniczną. Wektor jest wybierany, ilekroć nie ma potrzeby wstawiania lub usuwania w
środek (lista) lub od przodu.
Liczba elementów w tablicy może się znacznie różnić.
Przykład:
wektor V;
V.insert (V.begin (), 3);
assert (V.size () == 1 && V.capacity ()> = 1 && V [0] == 3);
Listy
Listy są „podwójnie połączonymi sekwencjami” obsługującymi zarówno przechodzenie do przodu, jak i do tyłu. Czas potrzebny na wstawienie i usunięcie na początku, na końcu i na środku jest stały. Wstawianie i łączenie między połączonymi listami nie unieważnia żadnej iteracji w elementach. Tylko usunięcie unieważnia iterację. Nie są zsynchronizowane, więc nie są dostępne losowo. Kolejność iteracji może się zmieniać w zależności od użytkownika, ale nie wpływa na zmiany elementów. Są szybsze niż wektory i idealnie nadają się do wstawiania i usuwania na początku, w środku i na końcu list elementów.
Przykład:
#zawierać
// lista definicji szablonów klas
… .
int main ()
int tablica [4] = 2, 6, 4, 8;
std :: wartości list;
std :: list otherValues;
Streszczenie:
1. Lista nie jest synchronizowana, gdy wektor jest.
2. Listy nie mają domyślnego rozmiaru, podczas gdy wektor ma domyślny rozmiar 10.
3. Zarówno listy, jak i wektory są dynamicznie rosnącymi tablicami.
4. Lista nie jest bezpieczna dla wątków, podczas gdy wektor jest bezpieczny dla wątków.
5. Listy, ponieważ dotyczą tylko dodawania i usuwania z przodu iz tyłu, są krótsze
wektory zajmują więcej procesora.
6. Wektor rośnie dwukrotnie, a lista zmniejsza się do połowy, tj. 50 procent.