Różnica między wektorem C ++ a macierzą
Wektory to kontenery sekwencji, które wykorzystują ciągłe miejsca przechowywania do przechowywania elementów. Mogą zarządzać pamięcią i dynamicznie rosnąć w efektywny sposób. Umiejętności te mają swoją cenę: wektory zużywają więcej pamięci w zamian za możliwość obsługi pamięci i dynamicznego powiększania się.
wektor v; gdzie v jest zmienną typu liczb całkowitych elementów Vector store. Jest to znane jako inicjalizacja wektora:
Przechowuj losową liczbę całkowitą z funkcją „push_back”:
v.push_back (11); v.push_back (12); v.push_back (13); v.push_back (14); Za pomocą funkcji „pop_back ()”, aby usunąć ostatni element: v.pop_back (); Aby usunąć pierwszy element, możemy użyć funkcji erase (): v.erase (v.begin ()); Dostęp do pierwszego elementu za pomocą funkcji front (); v.front (); Dostęp do ostatniego elementu za pomocą funkcji back (); v.back (); |
Tablica przechowuje sekwencyjny zbiór elementów tego samego typu o stałej wielkości. Służy do przechowywania kolekcji danych, ale tablicę można uznać za zbiór zmiennych tego samego typu przechowywanych w sąsiadujących lokalizacjach pamięci. Wszystkie tablice składają się z ciągłych lokalizacji pamięci, przy czym najniższy adres odpowiada pierwszemu elementowi, a najwyższy adres do ostatniego elementu.
Zadeklaruj tablicę w C ++:
wpisz tablica_nazwa (rozmiar_kolejki); // Typ służy do określenia typu elementów w tablicy Inicjowanie tablicy: podwójne wartości (5) = (23, 7, 32, 1, 66, 7, 11, 1, 44, 6); C ++ ma wielowymiarową tablicę: Wpisz nazwę (rozmiar 1) (rozmiar 2)… .. (rozmiar N); Inicjowanie tablicy dwuwymiarowej: int a (3) (4) = ((0, 1, 2), (4, 5, 6, 7), (8, 9, 10, 11)); Przekazywanie wskaźnika do tablicy przez określenie nazwy tablicy bez indeksu: void dummyFunction (int * param) ( ) Z indeksem: void dummyFunction (int param ()) ( ) |
Bezpośrednie porównanie między C ++ Vector vs Array (infografiki)
Poniżej znajduje się 8 najważniejszych różnic między wektorem a macierzą w c ++
Kluczowa różnica między C ++ Vector a Array
Zarówno C ++ Vector vs Array to popularne wybory na rynku; omówmy niektóre z głównych różnic między wektorem a macierzą w c ++:
- Wektor to kontenery sekwencyjne, a tablica to struktura danych niższego poziomu.
- Wektor jest dostarczany w postaci klasy szablonów w C ++ z rodzicem jako klasą Collection, natomiast Array to struktura danych niższego poziomu z własnymi specyficznymi właściwościami.
- Wektor nie jest oparty na indeksie i ma funkcje i konstruktory, podczas gdy tablice to oparte na indeksie struktury danych o najniższym adresie do pierwszego elementu, a najwyższy adres do ostatniego elementu w tablicy.
- Wektor ma charakter dynamiczny, tzn. Jego rozmiar automatycznie rośnie wraz z większą liczbą wstawianych elementów, natomiast tablice mają ustaloną strukturę rozmiarów, po zainicjowaniu nie można zresetować.
- Wektor jest lepszy do częstego wstawiania i usuwania, natomiast tablice znacznie lepiej nadają się do częstego dostępu do scenariusza elementów.
- Vector zajmuje znacznie więcej pamięci w zamian za możliwość zarządzania pamięcią i dynamicznego wzrostu, podczas gdy tablice są strukturą danych wydajną pod względem pamięci.
- Wektor pochodzi z kolekcji, która zawiera bardziej ogólny typ danych, natomiast tablica jest stała i przechowuje silniejszy typ danych.
- Wektor przechowuje elementy w ciągłej lokalizacji pamięci i umożliwia bezpośredni dostęp do elementu za pomocą operatora indeksu dolnego, natomiast tablica zawiera elementy z ich lokalizacją pamięci, które są z natury ciągłe.
- Wektor zajmuje więcej czasu w dostępie do elementów, a ciągła właściwość Array sprawia, że są bardzo wydajne w dostępie do elementów.
- Generyczne wykorzystanie dźwigni wektorowej, jest to w zasadzie wersja bezpieczna dla typu, natomiast tablice z typem bezpiecznym, bardzo wydajnym pod względem prędkości i wydajności, obsługują wiele wymiarów.
Tabela porównawcza C ++ Vector vs Array
Poniżej znajduje się najwyższe porównanie między C ++ Vector a Array
Podstawa porównania między C ++ Vector a Array | Wektor | Szyk |
kreacja | Pojemnik sekwencyjny do przechowywania elementów | Oryginalna struktura danych oparta na koncepcji indeksu |
Pamięć | Zajmują więcej pamięci niż tablica | Wydajna pamięć |
Długość | Długość może się różnić | Naprawiono rozmiar długości |
Stosowanie | Częste wstawianie i usuwanie | Częsty dostęp do elementu |
Zmień rozmiar | Resize Vector ma charakter dynamiczny | Zmiana rozmiaru tablic jest droga |
Struktura | Klasa szablonów, konstrukcja tylko w C ++ | Przylegająca lokalizacja pamięci |
Indeksowanie | Struktura nieindeksowana | Indeks oparty na najniższym adresie jako pierwszym, a najwyższym adresie jako ostatnim |
Dostęp | Element dostępu jest czasochłonny, chociaż opiera się na pozycji elementu | Element dostępowy jest operacją o stałym czasie, niezależnie od położenia elementu |
Wniosek - C ++ Vector vs Array
Zarówno C ++ Vector vs Array to odrębne typy, mające różne możliwości i przechowujące swoje dane na różne sposoby. Te możliwości przechowywania i konstrukcja zarówno struktur danych C ++ Vector vs Array czynią je wyjątkowymi na swój sposób. Tablica ma ustalony rozmiar i po jej przydzieleniu nie można dodawać ani usuwać z niej elementów, a także wszystkie elementy muszą być tego samego typu. Jest to więc bezpieczna pod względem typu i najbardziej wydajna struktura danych liniowych pod względem szybkości i wydajności. Ponadto tablica obsługuje wiele wymiarów. Vector jest klasą szablonów, a konstrukcja tylko w C ++. W przeciwieństwie do Array, mają one charakter dynamiczny, mogą zmieniać rozmiar automatycznie przy częstym wstawianiu i usuwaniu elementów. Zasadniczo jest to klasa szablonów zawierająca wskaźniki na stos, więc gdy zawsze wywołuje std: vector, zawsze wywoływana jest „nowa”. Elementy wektorowe gwarantują, że są ciągłe, ale jednocześnie dostęp do nich jest wolniejszy ze względu na podejście oparte na wskaźnikach. Najpierw trzeba mieć dostęp do wskaźnika, aby uzyskać praktyczne dane.
C ++ Vector vs Array to liniowa struktura danych, która dobrze nadaje się do różnych scenariuszy. Jeśli zdarza się częste wstawianie i usuwanie, a jednocześnie pamięć nie jest ograniczeniem, to Vector jest idealnym wyborem, podczas gdy w scenariuszach takich jak częsty dostęp do wymaganych elementów z ograniczeniem pamięci lepszym rozwiązaniem jest tablica. Wszystko zależy od przypadku użycia i wymagań. Tablica ma zawsze charakter listy, ale wektor jest klasą szablonu i jest taki sam jak tablica dynamiczna. Tablica umożliwia oba rodzaje dostępu, bezpośredni i sekwencyjny, podczas gdy Vector pozwala tylko na dostęp sekwencyjny. A to dlatego, że te struktury danych są przechowywane w pamięci. Ponieważ elementy wektorowe są umieszczone w ciągłym bloku pamięci, można je łatwo przechodzić za pomocą iteratora.
W C ++ dostępnych jest wiele funkcji z Vector jako klasą szablonów, wszystkie funkcje zapewniają pewną funkcjonalność wokół Vector, tj. Begin (), end (), rbegin (), rend (), cbegin (), cend (), crbegin (), crend (), size (), max_size (), pojemność (), resize (), empty (), reverse () i shrink_to_fit (). Tablica jest bardzo mocno związana ze sprzętowym pojęciem ciągłej, ciągłej pamięci, przy czym każdy element ma identyczny rozmiar. Oba pomysły C ++ Vector vs Array dość dobrze się zestawiają, w oparciu o scenariusze. Pod koniec dnia wszystko sprowadza się do wymagań. Deweloper musi rozważyć wymagania dotyczące projektu, a tym samym podjąć jakąkolwiek decyzję.
Polecany artykuł
To był przewodnik po najważniejszych różnicach między C ++ Vector a Array. Tutaj omawiamy również różnice między kluczem C ++ Vector a Array za pomocą infografiki i tabeli porównawczej. Możesz także zapoznać się z poniższymi artykułami C ++ Vector vs Array, aby dowiedzieć się więcej -
- Odwołanie do C ++ vs wskaźnik
- C # Array vs List
- Wydajność C a C ++
- Lista Java a lista macierzy
- Wymagaj a importuj: jakie są korzyści
- C vs C #: Jakie są funkcje