Wektor i lista

Anonim

Wektor vs lista

Często mylące dla programistów, wektory i listy są sekwencjami używanymi w holdingach tablicowych w C ++ i Java. Te dwa pojęcia przechowują adresy tablicowe, ale z różnymi metodami trzymania tablic. Podstawową rzeczą, którą musimy wiedzieć, jest to, że tablica jest "listą" zawierającą 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. Spójrzmy więc na te dwa pojęcia jeden po drugim.

Wektory Wektory są używane do trzymania tablic i dostępu do elementów. Tutaj możesz uzyskać dostęp do dowolnego elementu losowo za pomocą operatora "[]". Łatwiej jest więc 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 na środku, wektory mają punkt plus, ponieważ możesz uzyskać dostęp do losowego adresu i wprowadzić tam zmiany. Jednak wektory są nieco powolne w porównaniu do obiektów listy. Wektory są traktowane jako obiekty zsynchronizowane, wydajne w dostępie swobodnym i prawidłowo przechowują dane za pomocą zsynchronizowanej listy. Wektor jest wybierany, gdy nie ma potrzeby wstawiania lub usuwania w środek (lista) lub z 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" wspierają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 powoduje unieważnienie iteracji. Nie są zsynchronizowane, więc nie są dostępne losowo. Kolejność iteracji może zmieniać się w zależności od użytkownika, ale nie ma wpływu na zmiany elementów. Są szybsze od wektorów i idealnie nadają się do wstawiania i usuwania na początku, środku i końcu listy elementów.

Przykład: #zawierać // wyświetl definicję klasy-szablonu …. int main () { int array [4] = {2, 6, 4, 8}; std:: list <int> wartości; std:: list <int> otherValues;

Streszczenie: 1. Lista nie jest zsynchronizowana, gdy wektor jest. 2. Listy nie mają domyślnego rozmiaru, a wektor ma domyślny rozmiar 10. 3. Listy 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ą szybsze wektory pobierają więcej procesora. 6. Wektor rośnie dwukrotnie, podczas gdy lista zmniejsza się do połowy, tj. 50 procent.