Einführung
Ein Array ist eine Reihe von gleichen Objekttypen in aufeinanderfolgenden Speicherplätzen. Ein Array kann die Länge nicht vergrößern oder verkürzen. Ein Vektor ist wie ein Array, aber seine Länge kann vergrößert oder verkleinert werden. Ein Vektor hat daher viel mehr Operationen als ein Array.
C++ hat viele Bibliotheken, die alle die C++-Standardbibliothek bilden. Eine dieser Bibliotheken ist die Containerbibliothek. Ein Container ist eine Sammlung von Objekten, und bestimmte Operationen können mit der Sammlung ausgeführt werden. C++-Container können in zwei Gruppen gruppiert werden: Sequenzcontainer und assoziative Container. Sequenzcontainer sind vector, array (nicht das zuvor besprochene Array), deque, forward_list und list. Dies sind unterschiedliche Sammlungen (array-ähnliche Datenstrukturen) und jede bietet unterschiedliche Kompromisse.
Jeder Programmierer sollte wissen, wie er entscheidet, ob er einen Vektor, ein Array, ein Deque, eine forward_list oder eine Liste verwendet. Wenn ein Programmierer eine Struktur benötigt, die mehr Operationen erfordert als die, die mit einem gewöhnlichen Array verbunden sind, sollte das gewöhnliche Array nicht verwendet werden.
Wenn die Aufgabe häufiges Einfügen und Löschen in der Mitte der Sequenz beinhaltet, sollte eine Liste oder forward_list verwendet werden. Wenn die Aufgabe häufige Einfügungen und Löschungen am Anfang oder Ende einer Sequenz beinhaltet, sollte ein Deque verwendet werden. Ein Vektor sollte verwendet werden, wenn diese Arten von Operationen nicht erforderlich sind.
Dieser Artikel zeigt Ihnen, wie Sie den C++-Vektor verwenden. Sie benötigen einige Kenntnisse über C++-Zeiger, Referenzen und Arrays, um diesen Artikel zu verstehen.
Klasse und Objekte
Eine Klasse ist ein Satz von Variablen und Funktionen, die zusammenarbeiten, wobei den Variablen keine Werte zugewiesen sind. Wenn den Variablen Werte zugewiesen werden, wird eine Klasse zu einem Objekt. Unterschiedliche Werte für dieselbe Klasse führen zu unterschiedlichen Objekten; das heißt, verschiedene Objekte können derselben Klasse angehören, aber unterschiedliche Werte haben. Das Erstellen eines Objekts aus einer Klasse wird auch als Instanziieren des Objekts bezeichnet.
Der Begriff Vektor beschreibt eine Klasse. Ein aus einem Vektor erstelltes Objekt hat einen Namen, der vom Programmierer gewählt wird.
Eine Funktion, die zu einer Klasse gehört, wird benötigt, um ein Objekt aus der Klasse zu instanziieren. In C++ hat diese Funktion denselben Namen wie der Name der Klasse. Verschiedene aus der Klasse erstellte (instanziierte) Objekte haben unterschiedliche Namen, die der Programmierer jedem von ihnen gegeben hat.
Ein Objekt aus einer Klasse zu erstellen bedeutet, das Objekt zu konstruieren; es bedeutet auch, das Objekt zu instanziieren.
Die Vektorklasse
Die Vektorklasse wurde bereits definiert und befindet sich in der Bibliothek. Um die Vektorklasse zu verwenden, muss ein Programmierer den Vektorheader mit der folgenden Vorverarbeitungsanweisung in die Datei einfügen:
#einschließenSobald der Header enthalten ist, werden alle Vektorfunktionen (Datenmember und Memberfunktionen) zugänglich. Um das Zählobjekt zur Ausgabe von Daten an das Terminal (Konsole) zu verwenden, muss auch der Objektkopf enthalten sein. Um ein Programm mit dem Vektor zu schreiben, müssen mindestens die folgenden Header enthalten sein:
#einschließen#einschließen
Instanziieren eines Vektors
int foo [10];Oben ist die Deklaration eines Arrays mit dem Namen „foo“ und der Anzahl der Elemente „10“.” Dies ist ein Array von ganzen Zahlen. Die Deklaration eines Vektors ist ähnlich. Bei einem Vektor ist die Anzahl der Elemente optional, da die Vektorlänge zunehmen oder abnehmen kann.
An dieser Stelle im Programm wurde die Vektorklasse bereits in der Bibliothek definiert und der Header eingefügt. Der Vektor kann wie folgt instanziiert werden:
std::VektorHier ist der Vektor von der speziellen Konstruktorfunktion. Der Datentyp, den der Vektor enthält, ist „int“ in spitzen Klammern. Der Begriff „vtr“ ist der vom Programmierer gewählte Name für den Vektor. Schließlich ist „8“ in Klammern die vorläufige Anzahl von ganzen Zahlen, die der Vektor haben wird.
Der Begriff „std“ steht für Standard-Namensraum. Auf diesen Begriff muss in diesem Zusammenhang ein Doppelpunkt folgen. Jeder kann seine eigene Vektorklassenbibliothek schreiben und verwenden. C++ verfügt jedoch bereits über eine Standardbibliothek mit Standardnamen, einschließlich „Vektor“.” Um einen Standardnamen zu verwenden, muss dem Standardnamen std vorangestellt werden:: . Um die Eingabe von std:: jedes Mal im Programm für einen Standardnamen zu vermeiden, kann die Programmdatei wie folgt gestartet werden:
#einschließen#einschließen
Verwenden von Namespace-Std;
Überladen einer Funktion
Wenn zwei oder mehr verschiedene Funktionssignaturen denselben Namen haben, wird dieser Name als überladen bezeichnet. Beim Aufruf einer Funktion bestimmen Anzahl und Art der Argumente, welche Funktion ausgeführt wird.
Konstruieren eines Vektors
Einen Vektor zu konstruieren bedeutet, ein Vektorobjekt zu instanziieren (erstellen). Die Konstruktorfunktion wird wie folgt überladen:
Vektor
Dies erzeugt einen Vektor der Länge Null und Typ „T.” Die folgende Anweisung erzeugt einen Vektor der Länge Null vom Typ „float“ mit dem Namen „vtr:“
VektorVektor
Dadurch entsteht ein Vektor mit n Elementen vom Typ „T.” Eine Aussage für diesen Vektor mit vier Float-Elementen lautet wie folgt:
VektorVektor
Dies erzeugt einen Vektor von n Elementen, initialisiert auf den Wert t. Die folgende Anweisung erzeugt einen Vektor aus 5 Elementen, wobei jedes Element den Wert 3 . hat.4:
VektorKonstruieren mit Initialisierung
Ein Vektor kann auf eine der folgenden beiden Arten gleichzeitig konstruiert (erstellt) und initialisiert werden:
VektorOder
VektorBeachten Sie, dass nach dem Objektnamen keine Klammern stehen. Klammern, die direkt nach dem Objektnamen verwendet werden, sollten die Initialisierungsliste wie folgt enthalten:
VektorEin Vektor kann später mit der Initialisiererliste konstruiert und initialisiert werden. In diesem Fall werden die Klammern nicht verwendet:
Vektorvtr = 1.1, 2.2, 3.3, 4.4;
Vektor
Dies ist ein Kopierkonstruktor. Es erzeugt einen Vektor V2 als Kopie des Vektors V1. Der folgende Code veranschaulicht dies:
VektorVektor
Zuweisen eines Vektors während der Konstruktion
Während der Konstruktion kann ein leerer Vektor erstellt werden, während ihm ein anderer zugewiesen wird, wie folgt:
VektorVektor
Die zweite Aussage ist äquivalent zu:
Vektorconst Vektor
Ein konstanter Vektor ist ein Vektor, dessen Elemente nicht geändert werden können. Die Werte in diesem Vektor sind schreibgeschützt. Nach der Erstellung sieht der Vektor wie folgt aus:
const-VektorIn diesem Vektortyp kann kein Element hinzugefügt oder entfernt werden. Außerdem kann kein Wert geändert werden.
Konstruieren mit Iterator
Eine Vorlage bietet eine generische Darstellung für einen Datentyp. Ein Iterator bietet eine generische Darstellung des Scannens durch die Werte eines Containers. Die Syntax zum Erstellen eines Vektors mit einem Iterator lautet wie folgt:
Vorlagevector(InputIterator zuerst, InputIterator zuletzt,const Allocator& = Allocator());
Dies konstruiert einen Vektor für den Bereich [erste, letzte) unter Verwendung des angegebenen Allocators, der später in diesem Artikel besprochen wird.
Einen Vektor zerstören
Um einen Vektor zu zerstören, lassen Sie ihn einfach aus dem Geltungsbereich gehen und die Zerstörung wird automatisch gehandhabt.
Vektorkapazität
size_type capacity() const noexcept
Die Gesamtzahl der Elemente, die der Vektor aufnehmen kann, ohne dass eine Neuzuweisung erforderlich ist, wird von der Kapazitätselementfunktion zurückgegeben. Ein Codesegment dafür sieht wie folgt aus:
Vektorint num = vtr.Kapazität();
cout << num << '\n';
Die Ausgabe ist 4.
Reserve(n)
Speicherplatz ist nicht immer frei verfügbar. Zusätzliche Plätze können im Voraus reserviert werden. Betrachten Sie das folgende Codesegment:
Vektorvtr.Reserve(6);
cout << vtr.capacity() << '\n';
Die Ausgabe ist 6. Der reservierte zusätzliche Platz beträgt also 6 - 4 = 2 Elemente. Die Funktion gibt void zurück.
size() const keine Ausnahme
Dies gibt die Anzahl der Elemente im Vektor zurück. Der folgende Code veranschaulicht diese Funktion:
VektorSchwimmer sz = vtr.Größe();
cout << sz << '\n';
Die Ausgabe ist 4.
schrumpfen bis es passt()
Nachdem einem Vektor mit der Funktion reserve() zusätzliche Kapazität gegeben wurde, kann der Vektor auf seine ursprüngliche Größe verkleinert werden. Der folgende Code veranschaulicht dies:
Vektorvtr.Reserve(6);
vtr.schrumpfen bis es passt();
int sz = vtr.Größe();
cout << sz << '\n';
Die Ausgabe ist 4 und nicht 6. Die Funktion gibt void zurück.
Größe ändern (Größe), Größe ändern (Größe, c)
Dies ändert die Größe des Vektors. Ist die neue Größe kleiner als die alte Größe, werden die Elemente gegen Ende gelöscht. Wenn die neue Größe länger ist, wird gegen Ende ein Standardwert hinzugefügt. Um einen bestimmten Wert hinzuzufügen, verwenden Sie die Funktion resize() mit zwei Argumenten. Das folgende Codesegment veranschaulicht die Verwendung dieser beiden Funktionen:
Vektorvtr1.Größe ändern (2);
cout << "New size of vtr1: " << vtr1.size() << '\n';
Vektor
vtr2.Größe ändern (4, 8.8);
cout << "vtr2: "<< vtr2[0] <<" "<< vtr2[1] <<"
"<< vtr2[2] <<" "<< vtr2[3] << '\n';
Die Ausgabe ist die folgende:
Neue Größe von vtr1: 2vtr2: 1.1 2.2 8.8 8.8
Die Funktionen geben void zurück.
empty() const noexcept
Diese Funktion gibt 1 für wahr zurück, wenn der Vektor keine Elemente enthält, und 0 für falsch, wenn der Vektor leer ist. Wenn ein Vektor 4 Positionen für einen bestimmten Datentyp hat, z. B. float, ohne einen float-Wert, dann ist dieser Vektor nicht leer. Der folgende Code veranschaulicht dies:
Vektorcout << vtr.empty() << '\n';
Vektor
cout << vt.empty() << '\n';
Vektor
cout << v.empty() << '\n';
Die Ausgabe ist die folgende:
10
0
Zugriff auf Vektorelemente
Ein Vektor kann wie ein Array subscripted (indiziert) werden. Indexzählung beginnt bei Null.
Vektorname[i]
Die Operation „vectorName[i]“ liefert eine Referenz auf das Element am idas Index des Vektors. Der folgende Code gibt 3 . aus.3 für den obigen Vektor:
Vektorfloat fl = vtr[2];
cout << fl << '\n';
vectorName[i] const
Die Operation „vectorName[i] const“ wird anstelle von „vectorName[i]“ ausgeführt, wenn der Vektor ein konstanter Vektor ist. Diese Operation wird im folgenden Code verwendet:
const-Vektorfloat fl = vtr[2];
cout << fl << '\n';
Der Ausdruck gibt eine konstante Referenz auf das i . zurückdas Element des Vektors.
Wert mit tiefgestelltem Index zuweisen
Einem nicht konstanten Vektor kann wie folgt ein Wert zugewiesen werden:
Vektorvtr[2] = 8.8;
cout << vtr[2] << '\n';
Die Ausgabe ist 8.8.
Vektorname.bei(i)
„Vektorname.at(i)“ ist wie „vectorName[i]“, aber „vectorName.at(i)” ist zuverlässiger. Der folgende Code zeigt, wie dieser Vektor verwendet werden soll:
VektorSchwimmer fl = vtr.um 2);
cout << fl << '\n';
at() ist eine Vektorelementfunktion.
Vektorname.at(i) const
„Vektorname.at(i) const“ ist wie „vectorName[i] const“, aber „vectorName.at(i) const” ist zuverlässiger. „Vektorname.at(i) const“ wird anstelle von „vectorName“ ausgeführt.at(i)”, wenn der Vektor ein konstanter Vektor ist. Dieser Vektor wird im folgenden Code verwendet:
const-VektorSchwimmer fl = vtr.um 2);
cout << fl << '\n';
at() const ist eine Vektorelementfunktion.
Zuweisen eines Wertes mit der at()-Funktion
Mit der Funktion at() kann einem nicht konstanten Vektor ein Wert wie folgt zugewiesen werden:
Vektorvtr.at(2) = 8.8;
cout << vtr[2] << '\n';
Die Ausgabe ist 8.8.
Problem mit Subscripting
Das Problem bei der Subskription (Indexierung) besteht darin, dass, wenn der Index außerhalb des zulässigen Bereichs liegt, zur Laufzeit möglicherweise Null zurückgegeben oder ein Fehler ausgegeben wird.
Vorderseite()
Dies gibt eine Referenz auf das erste Element des Vektors zurück, ohne das Element zu entfernen. Die Ausgabe des folgenden Codes ist 1.1.
VektorSchwimmer fl = vtr.Vorderseite();
cout << fl << '\n';
Das Element wird nicht aus dem Vektor entfernt.
front() const
Wenn der Vektorkonstruktion const vorangestellt ist, wird der Ausdruck „front() const“ anstelle von „front()“ ausgeführt.” Dies wird im folgenden Code verwendet:
const-VektorSchwimmer fl = vtr.Vorderseite();
cout << fl << '\n';
Es wird eine konstante Referenz zurückgegeben. Das Element wird nicht aus dem Vektor entfernt.
zurück()
Dies gibt eine Referenz auf das letzte Element des Vektors zurück, ohne das Element zu entfernen. Die Ausgabe des folgenden Codes ist 4.4.
VektorSchwimmer fl = vtr.zurück();
cout << fl << '\n';
zurück() const
Wenn der Vektorkonstruktion const vorangestellt ist, wird der Ausdruck „back() const“ anstelle von „back()“ ausgeführt.” Dies wird im folgenden Code verwendet:
const-VektorSchwimmer fl = vtr.zurück();
cout << fl << '\n';
Es wird eine konstante Referenz zurückgegeben. Das Element wird nicht aus dem Vektor entfernt.
Vektordatenzugriff
data() keine Ausnahme; data() const noaußer;
Beides gibt einen Zeiger zurück, so dass [data(), data() + size()) ein gültiger Bereich ist.
Dies wird später im Artikel genauer behandelt.
Zurückgebende Iteratoren und der Vektor
Ein Iterator ist wie ein Zeiger, hat aber mehr Funktionalität als ein Zeiger.
begin() keine Ausnahme
Gibt einen Iterator zurück, der auf das erste Element des Vektors zeigt, wie im folgenden Codesegment:
VektorVektor
cout << *iter << '\n';
Die Ausgabe ist 1.1. Beachten Sie, dass die Deklaration, die den Iterator empfängt, deklariert wurde. Der Iterator wird in einem Rückgabeausdruck dereferenziert, um den Wert auf die gleiche Weise zu erhalten, wie ein Zeiger dereferenziert wird.
begin() const noexcept;
Gibt einen Iterator zurück, der auf das erste Element des Vektors zeigt. Wenn der Vektorkonstruktion const vorangestellt ist, wird der Ausdruck „begin() const“ anstelle von „begin()“ ausgeführt.” Unter dieser Bedingung kann das entsprechende Element im Vektor nicht geändert werden. Dies wird im folgenden Code verwendet:
const-VektorVektor
cout << *iter << '\n';
Die Ausgabe ist 1.1. Beachten Sie, dass diesmal „const_iterator“ anstelle von nur „iterator“ verwendet wurde, um den zurückgegebenen Iterator zu erhalten.
end() keine Ausnahme
Gibt einen Iterator zurück, der direkt über das letzte Element des Vektors hinaus zeigt. Betrachten Sie das folgende Codesegment:
VektorVektor
cout << *iter << '\n';
Die Ausgabe ist 0, was bedeutungslos ist, da es über das letzte Element hinaus kein konkretes Element gibt.
end() const noexcept
Gibt einen Iterator zurück, der direkt über das letzte Element des Vektors hinaus zeigt. Wenn der Vektorkonstruktion „const“ vorangestellt ist, wird der Ausdruck „end() const“ anstelle von „end()“ ausgeführt.” Betrachten Sie das folgende Codesegment:
const-VektorVektor
cout << *iter << '\n';
Die Ausgabe ist 0. Beachten Sie, dass diesmal „const_iterator“ anstelle von nur „iterator“ verwendet wurde, um den zurückgegebenen Iterator zu erhalten.
Umgekehrte Iteration
Es ist möglich, einen Iterator zu haben, der vom Ende bis kurz vor dem ersten Element iteriert.
rbegin() keine Ausnahme
Gibt einen Iterator zurück, der auf das letzte Element des Vektors zeigt, wie im folgenden Codesegment:
VektorVektor
cout << *rIter << '\n';
Die Ausgabe ist 4.4.
Beachten Sie, dass die Deklaration, die den umgekehrten Iterator empfängt, deklariert wurde. Der Iterator wird in einem Rückgabeausdruck dereferenziert, um den Wert auf die gleiche Weise zu erhalten, wie ein Zeiger dereferenziert wird.
rbegin() const noaußer;
Gibt einen Iterator zurück, der auf das letzte Element des Vektors zeigt. Wenn der Vektorkonstruktion „const“ vorangestellt ist, wird der Ausdruck „rbegin() const“ anstelle von „rbegin()“ ausgeführt.” Unter dieser Bedingung kann das entsprechende Element im Vektor nicht geändert werden. Diese Funktion wird im folgenden Code verwendet:
const-VektorVektor
cout << *rIter << '\n';
Die Ausgabe ist 4.4.
Beachten Sie, dass diesmal der const_reverse_iterator anstelle des reverse_iterator verwendet wurde, um den zurückgegebenen Iterator zu erhalten.
rend() keine Ausnahme
Gibt einen Iterator zurück, der direkt vor dem ersten Element des Vektors zeigt. Betrachten Sie das folgende Codesegment:
VektorVektor
cout << *rIter << '\n';
Die Ausgabe ist 0, was bedeutungslos ist, da es kein konkretes Element direkt vor dem ersten Element gibt.
rend() const keine Ausnahme
Gibt einen Iterator zurück, der direkt vor dem ersten Element des Vektors zeigt. Wenn der Vektorkonstruktion „const“ vorangestellt ist, wird der Ausdruck „rend() const“ anstelle von „rend()“ ausgeführt.” Betrachten Sie das folgende Codesegment:
const-VektorVektor
cout << *rIter << '\n';
Die Ausgabe ist 0.
Beachten Sie, dass diesmal der const_reverse_iterator anstelle des reverse_iterator verwendet wurde, um den zurückgegebenen Iterator zu erhalten.
Vektormodifikatoren
Ein Modifikator, der den Vektor modifiziert, kann einen Iterator annehmen oder zurückgeben.
ein.einlagern(p, args)
Fügt ein Objekt vom Typ T ein, das mit std::forward . konstruiert wurde
insert(iteratorPosition, Wert)
Fügt eine Kopie des Werts an der Iteratorposition des Vektors ein. Gibt den Iterator (Position) im Vektor zurück, in dem die Kopie platziert wurde. Der folgende Code zeigt, wo der Wert platziert wurde:
VektorVektor
++iter;
++iter;
vtr.einfügen (Iter, 25);
cout << vtr[1] << " << vtr[2]<< '
' << vtr[3] << '\n';
Die Ausgabe ist: 20 25 30.
Beachten Sie, dass der Iterator wie ein Zeiger vorgerückt (inkrementiert) wurde.
Es kann auch eine Initialisierungsliste eingefügt werden, wie der folgende Code veranschaulicht:
VektorVektor
++iter;
++iter;
vtr.insert(iter, 25, 28);
cout << vtr[1] << " << vtr[2]<< '
' << vtr[3]<< " << vtr[4] << '\n';
Die Ausgabe ist: 20 25 28 30.
löschen (position)
Entfernt ein Element an der Position, auf die der Iterator zeigt, und gibt dann die Iteratorposition zurück. Der folgende Code veranschaulicht dies:
VektorVektor
++iter;
++iter;
vtr.löschen (iter);
cout << vtr[0] << " << vtr[1] << '
' << vtr[2]<< '\n';
Die Ausgabe ist: 10 20 40
push_back(t), push_back(rv)
Wird verwendet, um ein einzelnes Element am Ende des Vektors hinzuzufügen. Verwenden Sie push_back(t) wie folgt:
Vektorvtr.push_back(5.5);
float fl = vtr[4];
cout << fl << '\n';
Die Ausgabe ist 5.5.
push_back(rv): - siehe später.Pop zurück()
Entfernt das letzte Element, ohne es zurückzugeben. Die Größe des Vektors wird um 1 . reduziert. Der folgende Code veranschaulicht dies:
Vektorvtr.Pop zurück();
Schwimmer sz = vtr.Größe();
cout << sz << '\n';
Die Ausgabe ist 3.
ein.tauschen (b)
Zwei Vektoren können vertauscht werden, wie im folgenden Codesegment dargestellt:
VektorVektor
vtr1.tauschen (vtr2);
cout << "vtr1: "<< vtr1[0] <<" "<< vtr1[1] <<"
"<< vtr1[2] <<" "<< vtr1[3] << '\n';
cout << "vtr2: "<< vtr2[0] <<" "<< vtr2[1] <<"
"<< vtr2[2] <<" "<< vtr2[3] << '\n';
Die Ausgabe ist:
vtr1: 10 20 0 0vtr2: 1.1 2.2 3.3 4.4
Beachten Sie, dass die Länge eines Vektors bei Bedarf erhöht wird. Außerdem werden Werte, die keine Ersetzungen hatten, durch einen Standardwert ersetzt.
klar()
Entfernt alle Elemente aus dem Vektor, wie das folgende Codesegment veranschaulicht:
Vektorvtr.klar();
cout << vtr.size() << '\n';
Die Ausgabe ist 0.
Gleichheits- und Beziehungsoperatoren für Vektoren
Der == Operator
Gibt 1 für wahr zurück, wenn die beiden Vektoren die gleiche Größe haben und die entsprechenden Elemente gleich sind; andernfalls wird 0 für false zurückgegeben. Beispielsweise:
VektorVektor
bool bl = U==V;
cout << bl << '\n';
Die Ausgabe ist 0.
Das != Betreiber
Gibt 1 für wahr zurück, wenn die beiden Vektoren nicht die gleiche Größe haben und/oder die entsprechenden Elemente nicht gleich sind; andernfalls wird 0 für false zurückgegeben. Beispielsweise:
VektorVektor
bool bl = U!=V;
cout << bl << '\n';
Die Ausgabe ist 1.
Das < Operator
Gibt 1 für wahr zurück, wenn der erste Vektor die anfängliche Teilmenge des zweiten Vektors ist, wobei die Elemente der beiden gleichen Teile gleich und in derselben Reihenfolge sind. Wenn beide Vektoren die gleiche Größe haben und sich von links nach rechts bewegen und im ersten Vektor ein Element angetroffen wird, das kleiner ist als das entsprechende Element im zweiten Vektor, wird trotzdem 1 zurückgegeben. Andernfalls wird 0 für false zurückgegeben. Beispielsweise:
VektorVektor
bool bl = U
Die Ausgabe ist 1. < does not include the case when the size and order are the same.
Der > Betreiber
Kehrt zurück !(U < V), where U is the first vector and V is the second vector, according to the above definitions.
Das <= Operator
Rückgabe U <= V, where U is the first vector and V is the second vector, according to the above definitions.
Der >= Operator
Kehrt zurück !(U <= V), where U is the first vector and V is the second vector, according to the above definitions.
Fazit
Ein Vektor ist ein Beispiel für einen Sequenzcontainer. Ein Vektor ist eine „bessere“ Form des gewöhnlichen Arrays und wird aus einer Klasse instanziiert. Vektoren haben Methoden, die unterteilt werden in: Konstruktion und Zuweisung, Kapazität, Elementzugriff, Datenzugriff, Iteratoren, Modifikatoren und überladene numerische Operatoren.
Es gibt andere Sequenzcontainer, genannt list, forward_list und array. Wenn die Aufgabe häufiges Einfügen und Löschen in der Mitte der Sequenz beinhaltet, sollte eine Liste oder forward_list verwendet werden. Wenn die Aufgabe häufige Einfügungen und Löschungen am Anfang oder Ende der Sequenz beinhaltet, sollte ein Deque verwendet werden. Daher sollten Vektoren nur verwendet werden, wenn diese Arten von Operationen nicht wichtig sind.