Jak korzystać z C++ Vector

How Use C Vector



Wstęp

Tablica to seria tych samych typów obiektów w kolejnych lokalizacjach pamięci. Szyk nie może zwiększyć długości rudy. Wektor jest jak tablica, ale jego długość można zwiększyć lub zmniejszyć. Dlatego wektor ma o wiele więcej operacji niż tablica.

C++ ma wiele bibliotek, z których wszystkie tworzą standardową bibliotekę C++. Jedną z tych bibliotek jest biblioteka kontenerów. Kontener to zbiór obiektów, a na kolekcji można wykonywać pewne operacje. Kontenery C++ można pogrupować w dwa zestawy: kontenery sekwencyjne i kontenery asocjacyjne. Kontenery sekwencji to wektor, tablica (nie ta sama omówiona wcześniej tablica), deque, forward_list i list. Są to różne kolekcje (struktury danych przypominające tablice), a każda z nich oferuje różne kompromisy.







Każdy programista powinien wiedzieć, jak zdecydować, czy użyć wektora, tablicy, deque, forward_list czy listy. Gdy programista potrzebuje struktury, która wymaga więcej operacji niż te związane ze zwykłą tablicą, nie należy używać zwykłej tablicy.



Jeśli zadanie wymaga częstego wstawiania i usuwania w środku sekwencji, należy użyć list lub forward_list. Jeśli zadanie obejmuje częste wstawiania i usuwanie na początku lub na końcu sekwencji, należy zastosować deque. Wektor powinien być używany, gdy tego rodzaju operacje nie są wymagane.



W tym artykule pokazano, jak używać wektora C++. Aby zrozumieć ten artykuł, będziesz potrzebować pewnej wiedzy na temat wskaźników, referencji i tablic C++.





Klasa i przedmioty

Klasa to zestaw zmiennych i funkcji, które współpracują ze sobą, przy czym zmienne nie mają przypisanych wartości. Kiedy wartości są przypisane do zmiennych, klasa staje się obiektem. Różne wartości przypisane do tej samej klasy skutkują różnymi obiektami; oznacza to, że różne obiekty mogą należeć do tej samej klasy, ale mieć różne wartości. Tworzenie obiektu z klasy jest również znane jako tworzenie instancji obiektu.

Termin wektor opisuje klasę. Obiekt utworzony z wektora ma nazwę wybraną przez programistę.



Funkcja należąca do klasy jest potrzebna do utworzenia instancji obiektu z klasy. W C++ ta funkcja ma taką samą nazwę jak nazwa klasy. Różne obiekty tworzone (instancja) z klasy mają różne nazwy nadawane każdemu z nich przez programistę.

Tworzenie obiektu z klasy oznacza konstruowanie obiektu; oznacza to również tworzenie instancji obiektu.

Klasa wektorowa

Klasa wektora została już zdefiniowana i znajduje się w bibliotece. Aby użyć klasy wektorowej, programista musi dołączyć nagłówek wektora do pliku z następującą dyrektywą przetwarzania wstępnego:

#włączać

Po dołączeniu nagłówka wszystkie funkcje wektorowe (członkowie danych i funkcje członkowskie) stają się dostępne. Aby użyć obiektu count do wyprowadzania danych do terminala (konsoli), należy również dołączyć nagłówek obiektu. Aby napisać program z wektorem, należy uwzględnić co najmniej następujące nagłówki:

#włączać
#włączać

Tworzenie instancji wektora

intbla[10];

Powyżej znajduje się deklaracja tablicy o nazwie foo i liczbie elementów 10. Jest to tablica liczb całkowitych. Deklaracja wektora jest podobna. W przypadku wektora liczba elementów jest opcjonalna, ponieważ długość wektora może się zwiększać lub zmniejszać.

W tym momencie w programie klasa wektora została już zdefiniowana w bibliotece, a nagłówek został dołączony. Wektor można utworzyć w następujący sposób:

godziny::wektor <int>vtr(8);

Tutaj wektor ma specjalną funkcję konstruktora. Typ danych, które będzie przechowywał wektor, to int, w nawiasach ostrych. Termin vtr to nazwa wybrana przez programistę dla wektora. Wreszcie 8 w nawiasach to orientacyjna liczba liczb całkowitych, jakie będzie miał wektor.

Termin std oznacza standardową przestrzeń nazw. W tym kontekście po tym terminie musi następować podwójny dwukropek. Każdy może napisać własną bibliotekę klas wektorowych i używać jej. Jednak C++ ma już standardową bibliotekę ze standardowymi nazwami, w tym vector. Aby użyć standardowej nazwy, standardowa nazwa musi być poprzedzona przez std:: . Aby uniknąć wpisywania std:: za każdym razem w programie dla standardowej nazwy, plik programu może startować w następujący sposób:

#włączać
#włączać
przy użyciu standardowej przestrzeni nazw;

Przeciążanie funkcji

Gdy dwie lub więcej różnych sygnatur funkcji ma tę samą nazwę, mówi się, że nazwa ta jest przeciążona. Gdy wywoływana jest jedna funkcja, liczba i typ argumentów określają, która funkcja jest wykonywana.

Konstruowanie wektora

Konstruowanie wektora oznacza tworzenie instancji (tworzenie) obiektu wektorowego. Funkcja konstruktora jest przeciążona w następujący sposób:

nazwa wektora

Tworzy to wektor o zerowej długości i typie T. Poniższa instrukcja tworzy wektor o zerowej długości typu float o nazwie vtr:

wektor<pływak>vtr;

nazwa wektora (n)

Tworzy to wektor z n elementami typu T. Instrukcja dla tego wektora z czterema elementami zmiennoprzecinkowymi wygląda następująco:

wektor<pływak>vtr(4);

nazwa wektora (n, t)

Tworzy to wektor n elementów inicjalizowany do wartości t. Poniższa instrukcja tworzy wektor składający się z 5 elementów, gdzie każdy element ma wartość 3,4:

wektor<pływak>vtr(5, 3.4);

Konstruowanie z inicjalizacją

Wektor można konstruować (utworzyć) i zainicjować w tym samym czasie na jeden z dwóch sposobów:

wektor<pływak>vtr= {1,1, 2.2, 3,3, 4.4};

Lub

wektor<pływak>vtr{1,1, 2.2, 3,3, 4.4};

Zauważ, że zaraz po nazwie obiektu nie ma nawiasów. Nawiasy użyte tuż po nazwie obiektu powinny mieć listę inicjalizatorów w następujący sposób:

wektor<pływak>vtr({1,1, 2.2, 3,3, 4.4});

Wektor można skonstruować i zainicjować później za pomocą listy inicjatorów. W takim przypadku nawiasy nie będą używane:

wektor<pływak>vtr;
vtr= {1,1, 2.2, 3,3, 4.4};

wektor V2 (V1)

To jest konstruktor kopiujący. Tworzy wektor V2 jako kopię wektora V1. Poniższy kod ilustruje to:

wektor<pływak>vtr1(5, 3.4);
wektor<pływak>vtr2(vtr1);

Przypisywanie wektora podczas budowy

W trakcie konstrukcji można utworzyć pusty wektor, a jednocześnie przypisać do niego inny, w następujący sposób:

wektor<pływak>vtr1{1,1, 2.2, 3,3, 4.4};
wektor<pływak>vtr2=vtr1;

Drugie stwierdzenie jest równoważne:

wektor<pływak>vtr2= {1,1, 2.2, 3,3, 4.4};

const wektor

Wektor stały to wektor, którego elementów nie można zmienić. Wartości w tym wektorze są tylko do odczytu. Po utworzeniu wektor wygląda następująco:

staływektor<pływak>vtr{1,1, 2.2, 3,3, 4.4};

W tym typie wektora nie można dodawać ani usuwać żadnego elementu. Co więcej, nie można zmienić żadnej wartości.

Konstruowanie z iteratorem

Szablon zapewnia ogólną reprezentację typu danych. Iterator zapewnia ogólną reprezentację skanowania przez wartości kontenera. Składnia tworzenia wektora z iteratorem jest następująca:

szablon<klasa InputIterator>
wektor(Najpierw InputIterator,InputIterator ostatni,stałyAlokator& =Alokator());

Konstruuje to wektor dla zakresu [first, last) przy użyciu określonego alokatora, który zostanie omówiony w dalszej części tego artykułu.

Zniszczenie wektora

Aby zniszczyć wektor, po prostu pozwól mu wyjść poza zakres, a zniszczenie jest obsługiwane automatycznie.

Pojemność wektora

size_type pojemność() const noexcept

Całkowita liczba elementów, które wektor może przechowywać bez konieczności realokacji, jest zwracana przez funkcję składową pojemności. Segment kodu do tego wygląda następująco:

wektor<pływak>vtr(4);
intna jednego=vtr.Pojemność();
koszt<<na jednego<< ' ';

Wyjście to 4.

rezerwa(n)

Przestrzeń pamięci nie zawsze jest swobodnie dostępna. Dodatkowe miejsce można zarezerwować z wyprzedzeniem. Rozważ następujący segment kodu:

wektor<pływak>vtr(4);
vtr.rezerwować(6);
koszt<<vtr.Pojemność() << ' ';

Wynik to 6. Tak więc zarezerwowane dodatkowe miejsce to 6 – 4 = 2 elementy. Funkcja zwraca void.

size() const noexcept

Zwraca liczbę elementów w wektorze. Poniższy kod ilustruje tę funkcję:

wektor<pływak>vtr(4);
pływaks=vtr.rozmiar();
koszt<<s<< ' ';

Wyjście to 4.

zmniejsz_do_dopasowania()

Po nadaniu wektorowi dodatkowej pojemności za pomocą funkcji Reserve(), wektor może zostać zmniejszony tak, aby pasował do jego oryginalnego rozmiaru. Poniższy kod ilustruje to:

wektor<pływak>vtr(4);
vtr.rezerwować(6);
vtr.zmniejsz_do_dopasowania();
ints=vtr.rozmiar();
koszt<<s<< ' ';

Wyjście to 4, a nie 6. Funkcja zwraca void.

zmieńrozmiar(sz), zmieńrozmiar(sz,c)

To zmienia rozmiar wektora. Jeśli nowy rozmiar jest mniejszy niż stary, elementy znajdujące się na końcu są usuwane. Jeśli nowy rozmiar jest dłuższy, pod koniec dodawana jest domyślna wartość. Aby dodać konkretną wartość, użyj funkcji resize() z dwoma argumentami. Poniższy segment kodu ilustruje użycie tych dwóch funkcji:

wektor<pływak>vtr1{1,1, 2.2, 3,3, 4.4};
vtr1.Zmień rozmiar(2);
koszt<< 'Nowy rozmiar vtr1: ' <<vtr1.rozmiar() << ' ';
wektor<pływak>vtr2{1,1, 2.2};
vtr2.Zmień rozmiar(4, 8,8);
koszt<< 'vtr2:'<<vtr2[0] <<''<<vtr2[1] <<'
'
<<vtr2[2] <<''<<vtr2[3] << ' ';

Dane wyjściowe są następujące:

Nowy rozmiar vtr1: 2
vtr2: 1,1 2,2 8,8 8,8

Funkcje zwracają void.

empty() const noexcept

Ta funkcja zwraca 1 dla prawdy, jeśli w wektorze nie ma elementów, a 0 dla fałszu, jeśli wektor jest pusty. Jeśli wektor ma 4 lokalizacje dla określonego typu danych, na przykład zmiennoprzecinkowych, bez wartości zmiennoprzecinkowej, wektor ten nie jest pusty. Poniższy kod ilustruje to:

wektor<pływak>vtr;
koszt<<vtr.pusty() << ' ';
wektor<pływak>vt(4);
koszt<<abypusty() << ' ';

wektor<pływak>v(4,3,5);
koszt<<v.pusty() << ' ';

Dane wyjściowe są następujące:

1
0
0

Dostęp do elementów wektora

Wektor może być indeksowany (indeksowany) jak tablica. Liczenie indeksów zaczyna się od zera.

nazwa_wektora[i]

Operacja vectorName[i] zwraca odwołanie do elementu w iNSindeks wektora. Poniższy kod wyprowadza 3.3 dla powyższego wektora:

wektor<pływak>vtr{1,1, 2.2, 3,3, 4.4};
pływakfl=vtr[2];
koszt<<fl<< ' ';

nazwa_wektora[i] const

Operacja vectorName[i] const jest wykonywana zamiast vectorName[i], gdy wektor jest wektorem stałym. Ta operacja jest używana w następującym kodzie:

staływektor<pływak>vtr{1,1, 2.2, 3,3, 4.4};
pływakfl=vtr[2];
koszt<<fl<< ' ';

Wyrażenie zwraca stałe odniesienie do iNSelement wektora.

Przypisywanie wartości z indeksem dolnym

Wartość można przypisać do wektora niestałego w następujący sposób:

wektor<pływak>vtr{1,1, 2.2, 3,3, 4.4};
vtr[2] = 8,8;
koszt<<vtr[2] << ' ';

Wyjście to 8,8.

NazwaWektora.at(i)

vectorName.at(i) jest jak vectorName[i], ale vectorName.at(i) jest bardziej niezawodny. Poniższy kod pokazuje, jak należy używać tego wektora:

wektor<pływak>vtr{1,1, 2.2, 3,3, 4.4};
pływakfl=vtr.w(2);
koszt<<fl<< ' ';
w()jest członkiem wektorafunkcjonować.

nazwa_wektora.at(i) const

vectorName.at(i) const jest jak vectorName[i] const, ale vectorName.at(i) const jest bardziej niezawodny. vectorName.at(i) const jest wykonywany zamiast vectorName.at(i), gdy wektor jest wektorem stałym. Ten wektor jest używany w następującym kodzie:

staływektor<pływak>vtr{1,1, 2.2, 3,3, 4.4};
pływakfl=vtr.w(2);
koszt<<fl<< ' ';
w() stałyjest członkiem wektorafunkcjonować.

Przypisywanie wartości za pomocą funkcji at()

Wartość można przypisać do niestałego wektora za pomocą funkcji at() w następujący sposób:

wektor<pływak>vtr{1,1, 2.2, 3,3, 4.4};
vtr.w(2) = 8,8;
koszt<<vtr[2] << ' ';

Wyjście to 8,8.

Problem ze skryptami podrzędnymi

Problem z subskryptami (indeksowaniem) polega na tym, że jeśli indeks jest poza zakresem, może zostać zwrócone zero lub w czasie wykonywania może wystąpić błąd.

z przodu()

Zwraca to odwołanie do pierwszego elementu wektora bez usuwania elementu. Dane wyjściowe poniższego kodu to 1.1.

wektor<pływak>vtr{1,1, 2.2, 3,3, 4.4};
pływakfl=vtr.z przodu();
koszt<<fl<< ' ';

Element nie jest usuwany z wektora.

front() const

Kiedy konstrukcja wektora jest poprzedzona const, zamiast front() wykonywane jest wyrażenie front() const. Jest to używane w następującym kodzie:

staływektor<pływak>vtr{1,1, 2.2, 3,3, 4.4};
pływakfl=vtr.z przodu();
koszt<<fl<< ' ';

Zwracane jest stałe odwołanie. Element nie jest usuwany z wektora.

plecy()

Zwraca to odwołanie do ostatniego elementu wektora bez usuwania elementu. Wyjście poniższego kodu to 4.4.

wektor<pływak>vtr{1,1, 2.2, 3,3, 4.4};
pływakfl=vtr.plecy();
koszt<<fl<< ' ';

back() const

Kiedy konstrukcja wektora jest poprzedzona const, zamiast back() wykonywane jest wyrażenie back() const. Jest to używane w następującym kodzie:

staływektor<pływak>vtr{1,1, 2.2, 3,3, 4.4};
pływakfl=vtr.plecy();
koszt<<fl<< ' ';

Zwracane jest stałe odwołanie. Element nie jest usuwany z wektora.

Dostęp do danych wektorowych

data() nie z wyjątkiem; data() const noexcept;

Każda z tych opcji zwraca wskaźnik taki, że [data(), data() + size()) jest prawidłowym zakresem.

Zostanie to omówione bardziej szczegółowo w dalszej części artykułu.

Powracające iteratory i wektor

Iterator jest jak wskaźnik, ale ma większą funkcjonalność niż wskaźnik.

begin() bez wyjątku

Zwraca iterator wskazujący na pierwszy element wektora, tak jak w następującym segmencie kodu:

wektor<pływak>vtr{1,1, 2.2, 3,3, 4.4};
wektor<pływak> ::iteratoriter=vtr.rozpocząć();
koszt<< *iter<< ' ';

Wynik wynosi 1,1. Zauważ, że deklaracja, która otrzymuje iterator, została zadeklarowana. Iterator jest wyłuskiwany w wyrażeniu zwracanym w celu uzyskania wartości w taki sam sposób, w jaki wyłuskiwany jest wskaźnik.

begin() const noexcept;

Zwraca iterator wskazujący na pierwszy element wektora. Gdy konstrukcja wektora jest poprzedzona const, zamiast begin() wykonywane jest wyrażenie begin() const. Pod tym warunkiem nie można modyfikować odpowiedniego elementu w wektorze. Jest to używane w następującym kodzie:

staływektor<pływak>vtr{1,1, 2.2, 3,3, 4.4};
wektor<pływak> ::const_iteratoriter=vtr.rozpocząć();
koszt<< *iter<< ' ';

Wynik wynosi 1,1. Zauważ, że const_iterator został użyty tym razem zamiast samego iteratora, aby otrzymać zwrócony iterator.

end() bez wyjątku

Zwraca iterator, który wskazuje bezpośrednio za ostatni element wektora. Rozważ następujący segment kodu:

wektor<pływak>vtr{1,1, 2.2, 3,3, 4.4};
wektor<pływak> ::iteratoriter=vtr.kończyć się();
koszt<< *iter<< ' ';

Wyjście to 0, co jest bez znaczenia, ponieważ nie ma konkretnego elementu poza ostatnim elementem.

end() const noexcept

Zwraca iterator, który wskazuje bezpośrednio za ostatni element wektora. Gdy konstrukcja wektora jest poprzedzona const, zamiast end() wykonywane jest wyrażenie end() const. Rozważ następujący segment kodu:

staływektor<pływak>vtr{1,1, 2.2, 3,3, 4.4};
wektor<pływak> ::const_iteratoriter=vtr.kończyć się();
koszt<< *iter<< ' ';

Wyjście to 0. Zauważ, że const_iterator został użyty tym razem zamiast samego iteratora do odebrania zwróconego iteratora.

Odwrotna iteracja

Możliwe jest posiadanie iteratora, który iteruje od końca do tuż przed pierwszym elementem.

rbegin() bez wyjątku

Zwraca iterator wskazujący na ostatni element wektora, jak w następującym segmencie kodu:

wektor<pływak>vtr{1,1, 2.2, 3,3, 4.4};
wektor<pływak> ::iterator_odwrotnyrIter=vtr.zaczynać();
koszt<< *rIter<< ' ';

Wynik to 4,4.

Zauważ, że deklaracja, która odbiera iterator odwrotny, została zadeklarowana. Iterator jest wyłuskiwany w wyrażeniu zwracanym w celu uzyskania wartości w taki sam sposób, w jaki wyłuskiwany jest wskaźnik.

rbegin() const noexcept;

Zwraca iterator wskazujący na ostatni element wektora. Gdy konstrukcja wektora jest poprzedzona const, zamiast rbegin() wykonywane jest wyrażenie rbegin() const. Pod tym warunkiem nie można modyfikować odpowiedniego elementu w wektorze. Ta funkcja jest używana w następującym kodzie:

staływektor<pływak>vtr{1,1, 2.2, 3,3, 4.4};
wektor<pływak> ::const_reverse_iteratorrIter=vtr.zaczynać();
koszt<< *rIter<< ' ';

Wynik to 4,4.

Zauważ, że tym razem użyto const_reverse_iterator, a nie tylko reverse_iterator, aby otrzymać zwrócony iterator.

render () bez wyjątku

Zwraca iterator wskazujący tuż przed pierwszym elementem wektora. Rozważ następujący segment kodu:

wektor<pływak>vtr{1,1, 2.2, 3,3, 4.4};
wektor<pływak> ::iterator_odwrotnyrIter=vtr.sprawia, że();
koszt<< *rIter<< ' ';

Wyjście to 0, co jest bez znaczenia, ponieważ nie ma konkretnego elementu tuż przed pierwszym elementem.

render () const noexcept

Zwraca iterator wskazujący tuż przed pierwszym elementem wektora. Gdy konstrukcja wektora jest poprzedzona const, zamiast rend() wykonywane jest wyrażenie rend() const. Rozważ następujący segment kodu:

staływektor<pływak>vtr{1,1, 2.2, 3,3, 4.4};
wektor<pływak> ::const_reverse_iteratorrIter=vtr.sprawia, że();
koszt<< *rIter<< ' ';

Wyjście to 0.

Zauważ, że tym razem użyto const_reverse_iterator, a nie tylko reverse_iterator, aby otrzymać zwrócony iterator.

Modyfikatory wektorowe

Modyfikator modyfikujący wektor może przyjąć lub zwrócić iterator.

a.miejsce(p, args)

Wstawia obiekt typu T skonstruowany za pomocą std::forward(args)… przed p.

Szczegóły – patrz dalej

wstaw(iteratorPozycja, wartość)

Wstawia kopię wartości w pozycji iteratora wektora. Zwraca iterator (pozycję) w wektorze, w którym umieszczono kopię. Poniższy kod pokazuje, gdzie została umieszczona wartość:

wektor<int>vtr{10, 20, 30, 40};
wektor<int> ::iteratoriter=vtr.rozpocząć();
++iter;
++iter;
vtr.wstawić(iter, 25);
koszt<<vtr[1] << '' <<vtr[2]<< '
'
<<vtr[3] << ' ';

Wyjście to: 20 25 30.

Zauważ, że iterator został zaawansowany (zwiększony) tak jak wskaźnik.

Można również wstawić listę inicjującą, jak ilustruje poniższy kod:

wektor<int>vtr{10, 20, 30, 40};
wektor<int> ::iteratoriter=vtr.rozpocząć();
++iter;
++iter;
vtr.wstawić(iter, {25, 28});

koszt<<vtr[1] << '' <<vtr[2]<< '
'
<<vtr[3]<< '' <<vtr[4] << ' ';

Wyjście to: 20 25 28 30.

wymazać (pozycja)

Usuwa element w pozycji wskazywanej przez iterator, a następnie zwraca pozycję iteratora. Poniższy kod ilustruje to:

wektor<int>vtr{10, 20, 30, 40};
wektor<int> ::iteratoriter=vtr.rozpocząć();
++iter;
++iter;
vtr.usuwać(iter);
koszt<<vtr[0] << '' <<vtr[1] << '
'
<<vtr[2]<< ' ';

Wyjście to: 10 20 40

push_back(t), push_back(rv)

Służy do dodawania pojedynczego elementu na końcu wektora. Użyj push_back(t) w następujący sposób:

wektor<pływak>vtr{1,1, 2.2, 3,3, 4.4};
vtr.push_back(5,5);
pływakfl=vtr[4];
koszt<<fl<< ' ';

Wyjście to 5,5.

push_back(rv): -Zobaczymy później.

pop_back()

Usuwa ostatni element bez zwracania go. Rozmiar wektora jest zmniejszony o 1. Poniższy kod ilustruje to:

wektor<pływak>vtr{1,1, 2.2, 3,3, 4.4};
vtr.pop_back();
pływaks=vtr.rozmiar();
koszt<<s<< ' ';

Wyjście to 3.

zamiana(b)

Można zamienić dwa wektory, jak pokazano w następującym segmencie kodu:

wektor<pływak>vtr1{1,1, 2.2, 3,3, 4.4};
wektor<pływak>vtr2{10, 20};
vtr1.zamieniać(vtr2);
koszt<< 'vtr1:'<<vtr1[0] <<''<<vtr1[1] <<'
'
<<vtr1[2] <<''<<vtr1[3] << ' ';

koszt<< 'vtr2:'<<vtr2[0] <<''<<vtr2[1] <<'
'
<<vtr2[2] <<''<<vtr2[3] << ' ';

Dane wyjściowe to:

vtr1: 10 20 0 0
vtr2: 1,1 2.2 3,3 4.4

Zauważ, że długość wektora jest zwiększana, jeśli to konieczne. Ponadto wartości, które nie miały zamienników, są zastępowane jakąś wartością domyślną.

jasne()

Usuwa wszystkie elementy z wektora, jak ilustruje poniższy segment kodu:

wektor<pływak>vtr{1,1, 2.2, 3,3, 4.4};
vtr.jasne();
koszt<<vtr.rozmiar() << ' ';

Wyjście to 0.

Operatory równości i relacyjne dla wektorów

== Operator

Zwraca 1 dla true, jeśli dwa wektory mają ten sam rozmiar, a odpowiadające im elementy są równe; w przeciwnym razie zwraca 0 dla fałszu. Na przykład:

wektor<int>U{1, 2, 3};
wektor<int>V{4, 5, 6};
boli bl=U==V;
koszt<<bl<< ' ';

Wyjście to 0.

Operator !=

Zwraca 1 dla true, jeśli dwa wektory nie mają tego samego rozmiaru i/lub odpowiadające im elementy nie są równe; w przeciwnym razie zwraca 0 dla fałszu. Na przykład:

wektor<int>U{1, 2, 3};
wektor<int>V{4, 5, 6};
boli bl=U! =V;
koszt<<bl<< ' ';

Wyjście to 1.

ten

Zwraca 1 dla prawdy, jeśli pierwszy wektor jest początkowym podzbiorem drugiego wektora, a elementy dwóch równych części są takie same iw tej samej kolejności. Jeśli oba wektory są tego samego rozmiaru i poruszają się od lewej do prawej, a w pierwszym wektorze napotkany element jest mniejszy niż odpowiadający mu element w drugim wektorze, to nadal zostanie zwrócone 1. W przeciwnym razie zwracane jest 0 dla fałszu. Na przykład:

wektor<int>U{3, 1, 1};
wektor<int>V{3, 2, 1};
boli bl=U<V;
koszt<<bl<< ' ';

Wyjście to 1.

> Operator

Zwroty! (U

ten<= Operator

Zwraca U<= V, where U is the first vector and V is the second vector, according to the above definitions.

>= Operator

Zwroty! (U<= V), where U is the first vector and V is the second vector, according to the above definitions.

Wniosek

Wektor jest przykładem kontenera sekwencji. Wektor jest lepszą formą zwykłej tablicy i jest tworzony z klasy. Wektory mają metody, które są klasyfikowane jako: konstrukcja i przypisanie, pojemność, dostęp do elementów, dostęp do danych, iteratory, modyfikatory i przeciążone operatory liczbowe.

Istnieją inne kontenery sekwencji o nazwie list, forward_list i array. Jeśli zadanie wymaga częstego wstawiania i usuwania w środku sekwencji, należy użyć list lub forward_list. Jeśli zadanie wymaga częstych insercji i usunięć na początku lub na końcu sekwencji, należy zastosować deque. Dlatego wektorów należy używać tylko wtedy, gdy tego typu operacje nie są ważne.