I. Was ist vector?
Ein vector ist ein Sequenzcontainer, der ein dynamisch dimensioniertes Array kapselt. Wie jeder andere Containertyp kann er Objekte verschiedener Typen speichern. Man kann ihn einfach als dynamisches Array betrachten, das Elemente beliebigen Typs aufnehmen kann.
II. Container-Eigenschaften
1. Geordnete Sequenz
Elemente in einem Sequenzcontainer sind in einer strengen linearen Reihenfolge angeordnet. Auf das entsprechende Element kann über seine Position in der Sequenz zugegriffen werden.
2. Dynamisches Array
Unterstützt schnellen direkten Zugriff auf jedes Element in der Sequenz, und dies kann sogar über Zeigerarithmetik erfolgen. Es bietet relativ schnelles Hinzufügen/Löschen von Elementen am Ende der Sequenz.
3. Allocator-bewusst
Der Container verwendet ein Allocator-Objekt, um seinen Speicherbedarf dynamisch zu verwalten.
III. Implementierung grundlegender Funktionen
1. Konstruktoren- vector(): erstellt einen leeren Vektor
- vector(int nSize): erstellt einen Vektor mit nSize Elementen
- vector(int nSize, const t& t): erstellt einen Vektor mit nSize Elementen, alle mit dem Wert t
- vector(const vector&): Kopierkonstruktor
- vector(begin,end): kopiert Elemente aus einem anderen Array im Bereich [begin,end) in den Vektor
2. Funktionen zum Hinzufügen
- void push_back(const T& x): fügt ein Element X am Ende des Vektors hinzu
- iterator insert(iterator it, const T& x): fügt ein Element x vor das Element ein, auf das der Iterator im Vektor zeigt
- iterator insert(iterator it, int n, const T& x): fügt n identische Elemente x vor das Element ein, auf das der Iterator im Vektor zeigt
- iterator insert(iterator it, const_iterator first, const_iterator last): fügt Daten aus einem anderen Vektor desselben Typs im Bereich [first,last) vor das Element ein, auf das der Iterator im Vektor zeigt
3. Funktionen zum Löschen
- iterator erase(iterator it): löscht das Element, auf das der Iterator im Vektor zeigt
- iterator erase(iterator first, iterator last): löscht Elemente im Vektor im Bereich [first,last)
- void pop_back(): löscht das letzte Element im Vektor
- void clear(): löscht alle Elemente im Vektor
4. Traversierungsfunktionen
- Referenz at(int pos): gibt eine Referenz auf das Element an Position pos zurück
- Referenz front(): gibt eine Referenz auf das erste Element zurück
- Referenz back(): gibt eine Referenz auf das letzte Element zurück
- Iterator begin(): gibt den Kopfzeiger des Vektors zurück, der auf das erste Element zeigt
- Iterator end(): gibt den Endzeiger des Vektors zurück, der auf die Position nach dem letzten Element zeigt
- reverse_iterator rbegin(): umgekehrter Iterator, der auf das letzte Element zeigt
- reverse_iterator rend(): umgekehrter Iterator, der auf die Position vor dem ersten Element zeigt
5. Prüffunktionen
- bool empty() const: bestimmt, ob der Vektor leer ist; wenn leer, hat der Vektor keine Elemente
6. Größenfunktionen
- int size() const: gibt die Anzahl der Elemente im Vektor zurück
- int capacity() const: gibt die maximale Anzahl von Elementen zurück, die der aktuelle Vektor aufnehmen kann
- int max_size() const: gibt die maximal zulässige Anzahl von Elementen im Vektor zurück
7. Weitere Funktionen
- void swap(vector&): vertauscht die Daten zweier Vektoren desselben Typs
- void assign(int n, const T& x): setzt die Werte der ersten n Elemente im Vektor auf x
- void assign(const_iterator first, const_iterator last): setzt die Elemente im Vektor auf die Elemente in [first,last)
8. Zur Verdeutlichung
1. push_back: fügt ein Datenelement am Ende des Arrays hinzu
2. pop_back: entfernt das letzte Datenelement aus dem Array
3. at: ruft die Daten an der nummerierten Position ab
4. begin: ruft den Zeiger auf den Anfang des Arrays ab
5. end: ruft den Zeiger auf ein Element nach dem letzten Element des Arrays ab
6. front: liefert eine Referenz auf den Kopf des Arrays
7. back: liefert eine Referenz auf das letzte Element des Arrays
8. max_size: liefert die maximal mögliche Größe des Vektors
9. capacity: die aktuell zugewiesene Größe des Vektors
10. size: die Größe der aktuell verwendeten Daten
11. resize: ändert die Größe der aktuell verwendeten Daten; ist sie größer als die aktuelle Nutzung, werden Standardwerte eingefügt
12. reserve: ändert die Größe des aktuell für den Vektor zugewiesenen Speicherplatzes
13. erase: löscht das Datenelement, auf das der Zeiger zeigt
14. clear: leert den aktuellen Vektor
15. rbegin: gibt den Startzeiger des umgekehrten Vektors zurück (eigentlich: ursprüngliches end - 1)
16. rend: gibt den Endzeiger des umgekehrten Vektors zurück (eigentlich: ursprüngliches begin - 1)
17. empty: bestimmt, ob der Vektor leer ist
18. swap: tauscht Daten mit einem anderen Vektor aus
IV. Grundlegende Verwendung
#include < vector> using namespace std;
V. Kurze Einführung
- Vector<type> Bezeichner
- Vector<type> Bezeichner(maximale Kapazität)
- Vector<type> Bezeichner(maximale Kapazität, Anfangswerte für alle)
- Int i[5]={1,2,3,4,5}
Vector<type> vi(I, i+2); // den Wert nach dem Indexwert i abrufen, i ist 3 - Vector< vector< int> >v; // zweidimensionaler Vektor. Hinweis: Das äußere <> muss ein Leerzeichen haben; andernfalls lässt es sich auf älteren Compilern nicht kompilieren.
Beispiel
1. pop_back() & push_back(elem) Beispiel: Entfernen und Einfügen von Daten am Ende des Containers
Beispiel
Das Ausgabeergebnis ist:
0,1,2,3,4,5,6,7,8,9, 0,1,2,3,4,
2. clear() löscht alle Daten im Container
Beispiel
Das Ausgabeergebnis ist:
0,1,2,3,4,5,6,7,8,9,
3. Sortieren
Beispiel
Das Ausgabeergebnis ist:
从小到大: 0,1,3, 从大到小: 3,1,0,
1. Beachten Sie, dass sort eine Header-Datei erfordert#include <algorithm>
2. Wenn Sie möchten, dass sort in absteigender Reihenfolge sortiert, können Sie sort umschreiben
bool compare(int a,int b)
{
return a< b; //升序排列,如果改为return a>b,则为降序
}
int a[20]={2,4,1,23,5,76,0,43,24,65},i;
for(i=0;i<20;i++)
cout<< a[i]<< endl;
sort(a,a+20,compare);
4. Zugriff (direkter Array-Zugriff & Iterator-Zugriff)
Beispiel
Das Ausgabeergebnis ist:
直接利用数组:0 1 2 3 4 5 6 7 8 9 利用迭代器:0 1 2 3 4 5 6 7 8 9
5. Zwei Methoden zum Definieren eines zweidimensionalen Arrays (gleiches Ergebnis)
Methode 1
Methode 2
Das Ausgabeergebnis ist:
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Originaladresse: http://blog.csdn.net/w_linux/article/details/71600574