Jak używać wektora C ++

Jak używać wektora C ++
Tablica to seria tych samych typów obiektów w kolejnych lokalizacjach pamięci. Tablica nie może zwiększyć rudów o zmniejszaniu długości. Wektor jest jak tablica, ale jego długość można zwiększyć lub zmniejszyć. Wektor ma zatem o wiele więcej operacji niż tablicę. C ++ ma wiele bibliotek, z których wszystkie tworzą standardową bibliotekę C ++. Jedna z tych bibliotek jest biblioteka kontenerów. Pojemnik to zbiór obiektów, a niektóre operacje można wykonać w kolekcji. Pojemniki C ++ można grupować w dwa zestawy: pojemniki sekwencyjne i pojemniki asocjacyjne. Pojemniki sekwencji to wektor, tablica (nie ta sama tablica omówiona wcześniej), Deque, Forward_list i List. Są to różne kolekcje (struktury danych podobnych do tablicy), a każda z nich oferuje odrębne kompromisy. Każdy programista powinien wiedzieć, jak zdecydować, czy użyć wektora, tablicy, deque, listy do przodu. Gdy programista potrzebuje struktury, która wymaga więcej operacji niż te związane ze zwykłą tablicą, zwykła tablica nie należy używać. Jeśli zadanie obejmuje częste wstawienia i usunięcia w środku sekwencji, należy użyć listy lub listy_przedzysłu. Jeśli zadanie obejmuje częste wstawienia i delecje na początku lub na końcu sekwencji, należy użyć deque. Wektor powinien być używany, gdy tego rodzaju operacje nie są wymagane. Ten artykuł pokazuje, jak korzystać z wektora C ++. Będziesz potrzebował wiedzy na temat wskaźników C ++, odniesień i tablic, aby zrozumieć ten artykuł.

Klasa i obiekty

Klasa to zestaw zmiennych i funkcji, które działają razem, w których zmienne nie mają przypisanych wartości. Gdy wartości są przypisywane do zmiennych, klasa staje się obiektem. Różne wartości podane tej samej klasie powodują różne obiekty; to znaczy różne obiekty mogą być tej samej klasy, ale mają 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ę.

Potrzebna jest funkcja, która należy do klasy, aby utworzyć obiekt z klasy. W C ++ funkcja ta ma taką samą nazwę jak nazwa klasy. Różne obiekty utworzone (utworzone) z klasy mają wyraźne nazwy podane każdemu z nich przez programistę.

Tworzenie obiektu z klasy oznacza konstruowanie obiektu; Oznacza to również instancję obiektu.

Klasa wektorowa

Klasa wektorowa została już zdefiniowana i znajduje się w bibliotece. Aby korzystać z klasy wektorowej, programista musi uwzględnić nagłówek wektorowy w pliku z następującą dyrektywą wstępnego przetwarzania:

#włączać

Po uwzględnieniu nagłówka wszystkie funkcje wektorowe (funkcje danych i funkcje członków) stają się dostępne. Aby użyć obiektu Count do wyświetlania danych do terminalu (konsoli), należy również uwzględnić nagłówek obiektu. Aby napisać program z wektorem, jako minimum, należy uwzględnić następujące nagłówki:

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

Instatowanie wektora

int foo [10];

Powyżej znajduje się deklaracja tablicy o nazwie „foo” i liczba elementów „10.„To jest szereg liczb całkowitych. Deklaracja wektora jest podobna. W przypadku wektora liczba elementów jest opcjonalna, ponieważ długość wektora może zwiększyć lub zmniejszyć.

W tym momencie programu klasa wektorowa została już zdefiniowana w bibliotece, a nagłówek został uwzględniony. Wektor można utworzyć w następujący sposób:

STD :: wektor VTR (8);

Tutaj wektor ma specjalną funkcję konstruktora. Rodzaj danych, które wektor będzie przechowywać, to „int” w nawiasach kątowych. Termin „vtr” to nazwa wybrana przez programistę dla wektora. Wreszcie, „8” w nawiasach to wstępna liczba liczb całkowitych, jaką będzie miał wektor.

Termin „STD” oznacza standardowy przestrzeń nazw. Po tym terminie musi nastąpić podwójny okrężnica, w tym kontekście. Każdy może napisać własną bibliotekę klas wektorowych i korzystać z niej. Jednak C ++ ma już standardową bibliotekę o standardowych nazwach, w tym „wektor.„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 rozpocząć się w następujący sposób:

#włączać
#włączać
za pomocą przestrzeni nazw Std;

Przeciążenie funkcji

Gdy dwa lub więcej różnych podpisów funkcji mają tę samą nazwę, mówi się, że ta nazwa jest przeciążona. Po wywołaniu jednej funkcji liczba i rodzaj argumentów określają, która funkcja jest wykonywana.

Konstruowanie wektora

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

Nazwa wektora

To tworzy wektor długości zero i typu „t.„Poniższe stwierdzenie tworzy wektor o zerowej długości typu„ Float ”z nazwą„ VTR: ”

wektor vtr;

Nazwa wektora (n)

To tworzy wektor z n elementami typu „T.„Oświadczenie dla tego wektora z czterema elementami pływakowymi jest następujące:

wektor VTR (4);

Nazwa wektora (n, t)

Tworzy to wektor n elementów zainicjowanych do wartości t. Poniższe stwierdzenie tworzy wektor 5 elementów, w którym każdy element ma wartość 3.4:

wektor VTR (5, 3.4);

Konstruowanie z inicjalizacją

Wektor można skonstruować (utworzyć) i zainicjować jednocześnie, na jeden z następujących dwóch sposobów:

wektor vtr = 1.1, 2.2, 3.3, 4.4;

Lub

wektor vtr 1.1, 2.2, 3.3, 4.4;

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

wektor vtr (1.1, 2.2, 3.3, 4.4);

Wektor można skonstruować i zainicjować później z listą inicjalizatora. W takim przypadku nawiasy nie będą używane:

wektor vtr;
vtr = 1.1, 2.2, 3.3, 4.4;

wektor v2 (v1)

To jest konstruktor kopii. Tworzy wektor v2 jako kopię wektora v1. Poniższy kod to ilustruje:

wektor VTR1 (5, 3.4);
wektor VTR2 (VTR1);

Przypisanie wektora podczas budowy

Podczas budowy można utworzyć pustego wektora, a inny jest do niego przypisany, w następujący sposób:

wektor VTR1 1.1, 2.2, 3.3, 4.4;
wektor vtr2 = vtr1;

Drugie stwierdzenie jest równoważne:

wektor vtr2 = 1.1, 2.2, 3.3, 4.4;

Conster wektor

Conster wektor jest wektorem, którego elementów nie można zmienić. Wartości w tym wektorze są tylko do odczytu. Po utworzeniu wektor pojawia się w następujący sposób:

Conster wektor vtr 1.1, 2.2, 3.3, 4.4;

W tym typie wektora nie można dodać ani usuwać elementu. Ponadto nie można zmienić żadnej wartości.

Konstruowanie z iteratorem

Szablon zapewnia ogólną reprezentację dla typu danych. Iterator zapewnia ogólną reprezentację skanowania poprzez wartości pojemnika. Składnia do utworzenia wektora z iteratorem jest następująca:

szablon
wektor (inputiterator pierwszy, inuputiterator last, const alokator & = alokator ());

To konstruuje wektor dla zakresu [pierwszy, ostatni) za pomocą określonego alokatora, który zostanie omówiony w dalszej części tego artykułu.

Niszczenie wektora

Aby zniszczyć wektor, po prostu pozwól mu wyjść z zakresu, a niszczenie jest obsługiwane automatycznie.

Pojemność wektorowa

size_typ Constal () const no -except

Całkowita liczba elementów, które wektor może przechowywać bez wymagania realokacji, jest zwracana przez funkcję członka pojemności. Segment kodu dla tego jest następujący:

wektor VTR (4);
int num = vtr.pojemność();
Cout << num << '\n';

Wyjście to 4.

Rezerwa (N)

Przestrzeń pamięci nie zawsze jest dostępna. Dodatkowa przestrzeń może być zarezerwowana z wyprzedzeniem. Rozważ następujący segment kodu:

wektor VTR (4);
vtr.rezerwę (6);
Cout << vtr.capacity() << '\n';

Wyjście to 6. Więc dodatkowa przestrzeń zarezerwowana wynosi 6 - 4 = 2 elementy. Funkcja zwraca pustkę.

rozmiar () const no -except

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

wektor VTR (4);
float sz = vtr.rozmiar();
Cout << sz << '\n';

Wyjście to 4.

Shrink_to_fit ()

Po podaniu dodatkowej pojemności wektorowi z funkcją rezerwową () wektor może być rozmiar. Poniższy kod to ilustruje:

wektor VTR (4);
vtr.rezerwę (6);
vtr.Shrink_to_fit ();
int sz = vtr.rozmiar();
Cout << sz << '\n';

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

Zmiana zmiany zmiany rozmiaru, rozmiar (Sz, c)

To zmienia rozmiar wektora. Jeśli nowy rozmiar jest mniejszy niż stary rozmiar, wówczas elementy pod koniec są wymazane. Jeśli nowy rozmiar jest dłuższy, pod koniec dodaje się pewna wartość domyślna. Aby mieć określoną wartość dodaną, użyj funkcji ReSize () z dwoma argumentami. Poniższy segment kodu ilustruje użycie tych dwóch funkcji:

wektor VTR1 1.1, 2.2, 3.3, 4.4;
VTR1.rozmiar (2);
Cout << "New size of vtr1: " << vtr1.size() << '\n';
wektor VTR2 1.1, 2.2;
VTR2.Zmień rozmiar (4, 8.8);
Cout << "vtr2: "<< vtr2[0] <<" "<< vtr2[1] <<"
"<< vtr2[2] <<" "<< vtr2[3] << '\n';

Wyjście jest następujące:

Nowy rozmiar VTR1: 2
VTR2: 1.1 2.2 8.8 8.8

Funkcje zwracają pustkę.

pusty () const no -except

Ta funkcja zwraca 1 dla true, jeśli nie ma elementów w wektorze i 0 dla fałszywego, jeśli wektor jest pusty. Jeśli wektor ma 4 lokalizacje dla określonego rodzaju danych, takich jak pływak, bez żadnej wartości zmiennoprzecinkowej, ten wektor nie jest pusty. Poniższy kod to ilustruje:

wektor vtr;
Cout << vtr.empty() << '\n';
wektor VT (4);
Cout << vt.empty() << '\n';
wektor v (4,3.5);
Cout << v.empty() << '\n';

Wyjście jest następujące:

1
0
0

Dostęp do elementu wektora

Wektor można podsensać (indeksować) jak tablica. Liczenie indeksu zaczyna się od zera.

VECTORNAME [i]

Operacja „VECTONMAME [i]” zwraca odniesienie do elementu na ith indeks wektora. Następujące wyniki kodu 3.3 dla powyższego wektora:

wektor vtr 1.1, 2.2, 3.3, 4.4;
float fl = vtr [2];
Cout << fl << '\n';

VECTORNAME [i] const

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

Conster wektor vtr 1.1, 2.2, 3.3, 4.4;
float fl = vtr [2];
Cout << fl << '\n';

Wyrażenie zwraca stałe odniesienie do ith element wektora.

Przypisanie wartości z indeksem dolnym

Wartość można przypisać do wektora nieokreślonego, w następujący sposób:

wektor vtr 1.1, 2.2, 3.3, 4.4;
vtr [2] = 8.8;
Cout << vtr[2] << '\n';

Wyjście to 8.8.

VECTORNAME.w (i)

„VECTONName.w (i) ”jest jak„ VectorName [i] ”, ale„ VectorName.w (i) ”jest bardziej niezawodny. Poniższy kod pokazuje, w jaki sposób należy użyć tego wektora:

wektor vtr 1.1, 2.2, 3.3, 4.4;
float fl = vtr.w (2);
Cout << fl << '\n';
at () jest funkcją członka wektorowego.

VECTORNAME.w (i) const

„VECTONName.At (i) const ”jest jak„ VectorName [i] const ”, ale„ VectorName.w (i) const ”jest bardziej niezawodny. „VECTONName.w (i) const ”jest wykonywane zamiast„ VECTORName.w (i) ”, gdy wektor jest stałym wektorem. Ten wektor jest używany w następującym kodzie:

Conster wektor vtr 1.1, 2.2, 3.3, 4.4;
float fl = vtr.w (2);
Cout << fl << '\n';
at () const jest funkcją członka wektorowego.

Przypisanie wartości z funkcją AT ()

Wartość można przypisać do wektora nieksięgowego z funkcją AT (), w następujący sposób:

wektor vtr 1.1, 2.2, 3.3, 4.4;
vtr.w (2) = 8.8;
Cout << vtr[2] << '\n';

Wyjście to 8.8.

Problem z subskrypcją

Problem z podskrypcją (indeksowanie) polega na tym, że jeśli indeks jest poza zasięgiem, zero może zostać zwrócone lub błąd może zostać wydany w czasie wykonywania.

przód()

Zwraca to odniesienie do pierwszego elementu wektora bez usuwania elementu. Wyjście następującego kodu to 1.1.

wektor vtr 1.1, 2.2, 3.3, 4.4;
float fl = vtr.przód();
Cout << fl << '\n';

Element nie jest usuwany z wektora.

front () const

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

Conster wektor vtr 1.1, 2.2, 3.3, 4.4;
float fl = vtr.przód();
Cout << fl << '\n';

Zwracane jest stałe odniesienie. Element nie jest usuwany z wektora.

z powrotem()

Zwraca to odniesienie do ostatniego elementu wektora bez usuwania elementu. Wyjście następującego kodu to 4.4.

wektor vtr 1.1, 2.2, 3.3, 4.4;
float fl = vtr.z powrotem();
Cout << fl << '\n';

back () const

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

Conster wektor vtr 1.1, 2.2, 3.3, 4.4;
float fl = vtr.z powrotem();
Cout << fl << '\n';

Zwracane jest stałe odniesienie. Element nie jest usuwany z wektora.

Wektorowy dostęp do danych

data () noExcept; data () const noExcept;

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

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

Powracające iteratory i wektor

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

początek () no -y -COUNT

Zwraca iterator, który wskazuje pierwszy element wektora, jak w następującym segmencie kodu:

wektor vtr 1.1, 2.2, 3.3, 4.4;
wektor:: iterator iter = vtr.zaczynać();
Cout << *iter << '\n';

Wyjście to 1.1. Zwróć uwagę, że deklaracja, która otrzymuje iterator, została zadeklarowana. Iterator jest dereferencyjny w wyrażeniu powrotnym, aby uzyskać wartość w taki sam sposób, jak wskaźnik jest dereferencyjny.

początek () const noxcept;

Zwraca iterator, który wskazuje na pierwszy element wektora. Gdy konstrukcja wektorowa jest poprzedzona const, wyrażenie „start () const” jest wykonywane zamiast „begin ().”W tym stanie nie można zmodyfikować odpowiedniego elementu w wektorze. Jest to używane w następującym kodzie:

Conster wektor vtr 1.1, 2.2, 3.3, 4.4;
wektor:: const_iterator iter = vtr.zaczynać();
Cout << *iter << '\n';

Wyjście to 1.1. Zauważ, że tym razem użyto „const_iterator” zamiast tylko „iteratora”, aby otrzymać zwrócony iterator.

end () no -y -ctcept

Zwraca iterator, który wskazuje natychmiast poza ostatni element wektora. Rozważ następujący segment kodu:

wektor vtr 1.1, 2.2, 3.3, 4.4;
wektor:: iterator iter = vtr.koniec();
Cout << *iter << '\n';

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

end () const no -except

Zwraca iterator, który wskazuje natychmiast poza ostatni element wektora. Gdy konstrukcja wektorowa jest poprzedzona „const”, wyrażenie „end () const” jest wykonywane zamiast „end ().”Rozważ następujący segment kodu:

Conster wektor vtr 1.1, 2.2, 3.3, 4.4;
wektor:: const_iterator iter = vtr.koniec();
Cout << *iter << '\n';

Wyjście to 0. Zauważ, że tym razem użyto „const_iterator” zamiast tylko „iteratora”, aby otrzymać zwrócony iterator.

Odwrotna iteracja

Możliwe jest posiadanie iteratora od końca do końca do pierwszego elementu.

rbegin () no -except

Zwraca iterator, który wskazuje ostatni element wektora, jak w następującym segmencie kodu:

wektor vtr 1.1, 2.2, 3.3, 4.4;
wektor:: reverse_iterator riter = vtr.rbegin ();
Cout << *rIter << '\n';

Wyjście to 4.4.

Zwróć uwagę, że deklaracja, która odbiera odwrotny iterator, została zadeklarowana. Iterator jest dereferencyjny w wyrażeniu powrotnym, aby uzyskać wartość w taki sam sposób, jak wskaźnik jest dereferencyjny.

rbegin () const noxcept;

Zwraca iterator, który wskazuje ostatni element wektora. Gdy konstrukcja wektorowa jest poprzedzona „const”, wyrażenie „rbegin () const” jest wykonywane zamiast „rbegin ().”W tym stanie nie można zmodyfikować odpowiedniego elementu w wektorze. Ta funkcja jest używana w następującym kodzie:

Conster wektor vtr 1.1, 2.2, 3.3, 4.4;
wektor:: const_reverse_iterator riter = vtr.rbegin ();
Cout << *rIter << '\n';

Wyjście to 4.4.

Zauważ, że tym razem użyto const_reverse_iterator, zamiast tylko odwrotnego_.

Rend () no -y -COUNT

Zwraca iterator, który wskazuje tuż przed pierwszym elementem wektora. Rozważ następujący segment kodu:

wektor vtr 1.1, 2.2, 3.3, 4.4;
wektor:: reverse_iterator riter = vtr.rozdzierać();
Cout << *rIter << '\n';

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

Rend () const no -except

Zwraca iterator, który wskazuje tuż przed pierwszym elementem wektora. Gdy konstrukcja wektorowa jest poprzedzona „const”, wyrażenie „Rend () const” jest wykonywane zamiast „Rend ().”Rozważ następujący segment kodu:

Conster wektor vtr 1.1, 2.2, 3.3, 4.4;
wektor:: const_reverse_iterator riter = vtr.rozdzierać();
Cout << *rIter << '\n';

Wyjście to 0.

Zauważ, że tym razem użyto const_reverse_iterator, zamiast tylko odwrotnego_.

Modyfikatory wektorowe

Modyfikator, który modyfikuje wektor, może wziąć lub zwrócić iterator.

A.emplace (p, args)

Wstaw obiekt typu T zbudowany ze std :: napastnik (args)… przed p.

Szczegółowe informacje - patrz później

wstaw (IteratorPosition, wartość)

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

wektor vtr 10, 20, 30, 40;
wektor:: iterator iter = vtr.zaczynać();
++iter;
++iter;
vtr.Wstaw (ITER, 25);
Cout << vtr[1] << " << vtr[2]<< '
' << vtr[3] << '\n';

Wyjście to: 20 25 30.

Zauważ, że iterator był zaawansowany (przyrostowy), podobnie jak wskaźnik.

Można również wstawić listę inicjalizatora, jak pokazuje następujący kod:

wektor vtr 10, 20, 30, 40;
wektor:: iterator iter = vtr.zaczynać();
++iter;
++iter;
vtr.insert (iter, 25, 28);
Cout << vtr[1] << " << vtr[2]<< '
' << vtr[3]<< " << vtr[4] << '\n';

Wyjście to: 20 25 28 30.

usunąć (pozycję)

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

wektor vtr 10, 20, 30, 40;
wektor:: iterator iter = vtr.zaczynać();
++iter;
++iter;
vtr.usunąć (itera);
Cout << vtr[0] << " << vtr[1] << '
' << vtr[2]<< '\n';

Wyjście to: 10 20 40

push_back (t), push_back (rv)

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

wektor vtr 1.1, 2.2, 3.3, 4.4;
vtr.push_back (5.5);
float fl = vtr [4];
Cout << fl << '\n';

Wyjście to 5.5.

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

pop_back ()

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

wektor vtr 1.1, 2.2, 3.3, 4.4;
vtr.pop_back ();
float sz = vtr.rozmiar();
Cout << sz << '\n';

Wyjście to 3.

A.zamiana (b)

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

wektor VTR1 1.1, 2.2, 3.3, 4.4;
wektor vtr2 10, 20;
VTR1.swap (vtr2);
Cout << "vtr1: "<< vtr1[0] <<" "<< vtr1[1] <<"
"<< vtr1[2] <<" "<< vtr1[3] << '\n';
Cout << "vtr2: "<< vtr2[0] <<" "<< vtr2[1] <<"
"<< vtr2[2] <<" "<< vtr2[3] << '\n';

Wyjście to:

VTR1: 10 20 0 0
VTR2: 1.1 2.2 3.3 4.4

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

jasne()

Usuwa wszystkie elementy z wektora, jak ilustruje następujący segment kodu:

wektor vtr 1.1, 2.2, 3.3, 4.4;
vtr.jasne();
Cout << vtr.size() << '\n';

Wyjście to 0.

Operatorzy równości i relacyjnych dla wektorów

Operator ==

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

wektor U 1, 2, 3;
wektor V 4, 5, 6;
Bool Bl = u == V;
Cout << bl << '\n';

Wyjście to 0.

!= Operator

Zwraca 1 dla True, jeśli dwa wektory nie mają takiego samego rozmiaru i/lub odpowiadających elementach nie są równe; W przeciwnym razie zwraca 0 dla fałszu. Na przykład:

wektor U 1, 2, 3;
wektor V 4, 5, 6;
bool bl = u!= V;
Cout << bl << '\n';

Wyjście to 1.

< Operator

Zwraca 1 dla true, jeśli pierwszy wektor jest początkowym podzbiorem drugiego wektora, przy czym elementy dwóch równych porcji są takie same i w tej samej kolejności. Jeśli oba wektory są tego samego rozmiaru i poruszają się od lewej do prawej, a element jest napotykany w pierwszym wektorze, który jest mniejszy niż odpowiedni element w drugim wektorze, wówczas 1 będzie nadal zwrócony. W przeciwnym razie zwracany jest 0 dla fałszywego. Na przykład:

wektor U 3, 1, 1;
wektor V 3, 2, 1;
bool bl = uCout << bl << '\n';

Wyjście to 1. < does not include the case when the size and order are the same.

Operator>

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

<= 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 pojemnika sekwencyjnego. Wektor jest „lepszą” formą zwykłej tablicy i jest tworzona z klasy. Wektory mają metody sklasyfikowane: budowa i przypisanie, pojemność, dostęp do elementów, dostęp do danych, iteratory, modyfikatory i liczbowe operatory przeciążone.

Istnieją inne kontenery sekwencyjne, zwane listą, napastnik_list i tablicy. Jeśli zadanie obejmuje częste wstawienia i usunięcia w środku sekwencji, należy użyć listy lub listy_przedzysłu. Jeśli zadanie obejmuje częste wstawienia i delecje na początku lub na końcu sekwencji, należy użyć deque. I tak wektory powinny być używane tylko wtedy, gdy tego rodzaju operacje nie są ważne.