Tablice vs wektory: wstępne podobieństwa i różnice [zamknięte]

Jakie są różnice między tablicą a wektorem w C ++? Przykładem różnic mogą być biblioteki, symbolika, zdolności itp.

Szyk

Tablice zawierają określoną liczbę elementów określonego typu. Aby kompilator mógł zarezerwować wymaganą ilość miejsca podczas kompilacji programu, należy określić typ i liczbę elementów, które tablica będzie zawierać, gdy zostanie zdefiniowana. Kompilator musi być w stanie określić tę wartość podczas kompilowania programu. Po zdefiniowaniu tablicy używasz identyfikatora tablicy wraz z indeksem, aby uzyskać dostęp do określonych elementów tablicy. [...] tablice są indeksowane zerami; to znaczy pierwszy element znajduje się w indeksie 0. Ten schemat indeksowania wskazuje na ścisły związek w C ++ między wskaźnikami i tablicami a regułami, które język definiuje dla arytmetyki wskaźników.

- C ++ Pocket Reference

Wektor

Wektor to sekwencja obiektów o rozmiarach dynamicznych, która zapewnia styl tablicowyoperator[] losowy dostęp. Funkcja członkapush_back kopiuje swoje argumenty za pomocą konstruktora kopii, dodaje tę kopię jako ostatni element wektora i zwiększa jej rozmiar o jeden.pop_back robi dokładnie odwrotnie, usuwając ostatni element. Wstawianie lub usuwanie elementów z końca wektora zajmuje zamortyzowany stały czas, a wstawianie lub usuwanie z dowolnej innej lokalizacji zajmuje liniowy czas. To są podstawy wektorów. Jest ich dużo więcej. W większości przypadków wektor powinien być pierwszym wyborem w stosunku do tablicy w stylu C. Przede wszystkim są one wielkościami dynamicznymi, co oznacza, że ​​mogą rosnąć w miarę potrzeb. Nie musisz wykonywać różnego rodzaju badań, aby obliczyć optymalny rozmiar statyczny, jak w przypadku tablic C; wektor rośnie w miarę potrzeb, a jeśli to konieczne, można go zmienić ręcznie na większy lub mniejszy. Po drugie, wektory sprawdzają ograniczenia za pomocąat funkcja członkowska (ale nie zoperator[]), abyś mógł coś zrobić, jeśli odwołujesz się do nieistniejącego indeksu zamiast po prostu obserwować awarię programu lub gorzej, kontynuując wykonywanie z uszkodzonymi danymi.

- C ++ Cookbook

questionAnswers(3)

yourAnswerToTheQuestion