logo

Vektor in C++ STL

Vektoren sind mit dynamischen Arrays identisch und können ihre Größe automatisch ändern, wenn ein Element eingefügt oder gelöscht wird, wobei ihre Speicherung automatisch vom Container verwaltet wird. Vektorelemente werden in einem zusammenhängenden Speicher abgelegt, sodass sie mithilfe von Iteratoren aufgerufen und durchlaufen werden können. Bei Vektoren werden die Daten am Ende eingefügt. Das Einfügen am Ende erfordert Differenzzeit, da das Array manchmal erweitert werden muss. Das Entfernen des letzten Elements nimmt nur eine konstante Zeit in Anspruch, da keine Größenänderung erfolgt. Das Einfügen und Löschen am Anfang oder in der Mitte erfolgt zeitlich linear.

Was ist std::vector in C++?

std::vector in C++ ist die Klassenvorlage, die den Vektorcontainer und seine Mitgliedsfunktionen enthält. Es ist innerhalb der definiert Header-Datei. Die Mitgliedsfunktionen der Klasse std::vector bieten verschiedene Funktionen für Vektorcontainer.



Syntax zum Deklarieren von Vektoren in C++

  std::vector   vectorName;>

Dabei ist der Datentyp der Datentyp jedes Elements des Vektors. Sie können std:: entfernen, wenn Sie den std-Namespace bereits verwendet haben.

Initialisierung von Vector in C++

Wir können einen Vektor auf folgende Weise initialisieren:

1. Initialisierung mit Liste

Diese Initialisierung erfolgt mit einer Deklaration. Hier übergeben wir die Liste der Elemente an den Vektorkonstruktor, um einen Vektor mit den angegebenen Elementen zu erstellen.



  vector   name({   value1, value2, value3 ....  });>

2. Initialisierung Mit einem einzigen Wert

Diese Initialisierung erfolgt ebenfalls mit Deklaration. Hier geben wir die Größe des Vektors an und initialisieren dann jedes Element des Vektors mit dem Wert.

  vector   name(size, value);>

3. Initialisierung von einem anderen Vektor

Diese Initialisierung wird verwendet, um einen Vektor zu erstellen, der eine exakte Kopie von other_vec ist.

  vector   name(other_vec);>

Einige häufig verwendete Mitgliedsfunktionen der Klasse std::vector sind unten aufgeführt:



Iteratoren

  1. beginnen() – Gibt einen Iterator zurück, der auf das erste Element im Vektor zeigt
  2. Ende() – Gibt einen Iterator zurück, der auf das theoretische Element zeigt, das dem letzten Element im Vektor folgt
  3. rbegin() – Gibt einen umgekehrten Iterator zurück, der auf das letzte Element im Vektor zeigt (umgekehrter Anfang). Es bewegt sich vom letzten zum ersten Element
  4. machen() – Gibt einen umgekehrten Iterator zurück, der auf das theoretische Element vor dem ersten Element im Vektor zeigt (als umgekehrtes Ende betrachtet).
  5. cbegin() – Gibt einen konstanten Iterator zurück, der auf das erste Element im Vektor zeigt.
  6. ein paar() – Gibt einen konstanten Iterator zurück, der auf das theoretische Element zeigt, das dem letzten Element im Vektor folgt.
  7. crbegin() – Gibt einen konstanten umgekehrten Iterator zurück, der auf das letzte Element im Vektor zeigt (umgekehrter Anfang). Es bewegt sich vom letzten zum ersten Element
  8. crend() – Gibt einen konstanten umgekehrten Iterator zurück, der auf das theoretische Element zeigt, das dem ersten Element im Vektor vorangeht (als umgekehrtes Ende betrachtet)

C++




// C++ program to illustrate the> // iterators in vector> #include> #include> > using> namespace> std;> > int> main()> {> >vector<>int>>g1;> > >for> (>int> i = 1; i <= 5; i++)> >g1.push_back(i);> > >cout <<>'Output of begin and end: '>;> >for> (>auto> i = g1.begin(); i != g1.end(); ++i)> >cout << *i <<>' '>;> > >cout <<>' Output of cbegin and cend: '>;> >for> (>auto> i = g1.cbegin(); i != g1.cend(); ++i)> >cout << *i <<>' '>;> > >cout <<>' Output of rbegin and rend: '>;> >for> (>auto> ir = g1.rbegin(); ir != g1.rend(); ++ir)> >cout << *ir <<>' '>;> > >cout <<>' Output of crbegin and crend : '>;> >for> (>auto> ir = g1.crbegin(); ir != g1.crend(); ++ir)> >cout << *ir <<>' '>;> > >return> 0;> }>

>

>

Ausgabe

Output of begin and end: 1 2 3 4 5 Output of cbegin and cend: 1 2 3 4 5 Output of rbegin and rend: 5 4 3 2 1 Output of crbegin and crend : 5 4 3 2 1>

Kapazität

  1. Größe() – Gibt die Anzahl der Elemente im Vektor zurück.
  2. maximale Größe() – Gibt die maximale Anzahl von Elementen zurück, die der Vektor enthalten kann.
  3. Kapazität() – Gibt die Größe des aktuell dem Vektor zugewiesenen Speicherplatzes zurück, ausgedrückt als Anzahl der Elemente.
  4. Größe ändern(n) – Ändert die Größe des Containers, sodass er „n“ Elemente enthält.
  5. leer() – Gibt zurück, ob der Container leer ist.
  6. schrumpfen bis es passt() – Reduziert das Fassungsvermögen des Behälters entsprechend seiner Größe und zerstört alle Elemente, die über das Fassungsvermögen hinausgehen.
  7. Reservieren() – Fordert an, dass die Vektorkapazität mindestens ausreicht, um n Elemente aufzunehmen.

C++




// C++ program to illustrate the> // capacity function in vector> #include> #include> > using> namespace> std;> > int> main()> {> >vector<>int>>g1;> > >for> (>int> i = 1; i <= 5; i++)> >g1.push_back(i);> > >cout <<>'Size : '> << g1.size();> >cout <<>' Capacity : '> << g1.capacity();> >cout <<>' Max_Size : '> << g1.max_size();> > >// resizes the vector size to 4> >g1.resize(4);> > >// prints the vector size after resize()> >cout <<>' Size : '> << g1.size();> > >// checks if the vector is empty or not> >if> (g1.empty() ==>false>)> >cout <<>' Vector is not empty'>;> >else> >cout <<>' Vector is empty'>;> > >// Shrinks the vector> >g1.shrink_to_fit();> >cout <<>' Vector elements are: '>;> >for> (>auto> it = g1.begin(); it != g1.end(); it++)> >cout << *it <<>' '>;> > >return> 0;> }>

>

Selen-Grundlagen
>

Ausgabe

Size : 5 Capacity : 8 Max_Size : 4611686018427387903 Size : 4 Vector is not empty Vector elements are: 1 2 3 4>

Elementzugriff

  1. Referenzoperator [g] – Gibt einen Verweis auf das Element an Position „g“ im Vektor zurück
  2. bei(g) – Gibt einen Verweis auf das Element an Position „g“ im Vektor zurück
  3. Vorderseite() – Gibt einen Verweis auf das erste Element im Vektor zurück
  4. zurück() – Gibt einen Verweis auf das letzte Element im Vektor zurück
  5. C++


    Android-Versionen



    // C++ program to illustrate the> // element access in vector> #include> using> namespace> std;> > int> main()> {> >vector<>int>>g1;> > >for> (>int> i = 1; i <= 10; i++)> >g1.push_back(i * 10);> > >cout <<>' Reference operator [g] : g1[2] = '> << g1[2];> > >cout <<>' at : g1.at(4) = '> << g1.at(4);> > >cout <<>' front() : g1.front() = '> << g1.front();> > >cout <<>' back() : g1.back() = '> << g1.back();> > >// pointer to the first element> >int>* pos = g1.data();> > >cout <<>' The first element is '> << *pos;> >return> 0;> }>

    >

    >

    Ausgabe

    Reference operator [g] : g1[2] = 30 at : g1.at(4) = 50 front() : g1.front() = 10 back() : g1.back() = 100 The first element is 10>

    Modifikatoren

    1. zuordnen() – Es weist den Vektorelementen einen neuen Wert zu, indem es alte ersetzt
    2. push_back() – Es schiebt die Elemente von hinten in einen Vektor
    3. Pop zurück() – Es wird verwendet, um Elemente von hinten aus einem Vektor herauszunehmen oder zu entfernen.
    4. einfügen() – Es fügt neue Elemente vor dem Element an der angegebenen Position ein
    5. löschen() – Es wird verwendet, um Elemente aus einem Container an der angegebenen Position oder im angegebenen Bereich zu entfernen.
    6. tauschen() – Es wird verwendet, um den Inhalt eines Vektors mit einem anderen Vektor desselben Typs auszutauschen. Größen können abweichen.
    7. klar() – Es wird verwendet, um alle Elemente des Vektorcontainers zu entfernen
    8. emplace() – Es erweitert den Container, indem an der Position ein neues Element eingefügt wird
    9. emplace_back() – Es wird verwendet, um ein neues Element in den Vektorcontainer einzufügen. Das neue Element wird am Ende des Vektors hinzugefügt

    C++




    // C++ program to illustrate the> // Modifiers in vector> #include> #include> using> namespace> std;> > int> main()> {> >// Assign vector> >vector<>int>>In;> > >// fill the vector with 10 five times> >v.assign(5, 10);> > >cout <<>'The vector elements are: '>;> >for> (>int> i = 0; i cout << v[i] << ' '; // inserts 15 to the last position v.push_back(15); int n = v.size(); cout << ' The last element is: ' << v[n - 1]; // removes last element v.pop_back(); // prints the vector cout << ' The vector elements are: '; for (int i = 0; i cout << v[i] << ' '; // inserts 5 at the beginning v.insert(v.begin(), 5); cout << ' The first element is: ' << v[0]; // removes the first element v.erase(v.begin()); cout << ' The first element is: ' << v[0]; // inserts at the beginning v.emplace(v.begin(), 5); cout << ' The first element is: ' << v[0]; // Inserts 20 at the end v.emplace_back(20); n = v.size(); cout << ' The last element is: ' << v[n - 1]; // erases the vector v.clear(); cout << ' Vector size after clear(): ' << v.size(); // two vector to perform swap vector v1, v2; v1.push_back(1); v1.push_back(2); v2.push_back(3); v2.push_back(4); cout<< ' Vector 1: '; for (int i = 0; i cout << v1[i] << ' '; cout << ' Vector 2: '; for (int i = 0; i cout << v2[i] << ' '; // Swaps v1 and v2 v1.swap(v2); cout << ' After Swap Vector 1: '; for (int i = 0; i cout << v1[i] << ' '; cout << ' Vector 2: '; for (int i = 0; i cout << v2[i] << ' '; }>

    >

    >

    Ausgabe

    The vector elements are: 10 10 10 10 10 The last element is: 15 The vector elements are: 10 10 10 10 10 The first element is: 5 The first element is: 10 The first element is: 5 The last element is: 20 Vector size after erase(): 0 Vector 1: 1 2 Vector 2: 3 4 After Swap Vector 1: 3 4 Vector 2: 1 2>

    Die zeitliche Komplexität für die Durchführung verschiedener Operationen an Vektoren beträgt:

    • Direktzugriff – Konstante O(1)
    • Einfügen oder Entfernen von Elementen am Ende – Konstante O(1)
    • Einfügen oder Entfernen von Elementen – linear im Abstand zum Ende des Vektors O(N)
    • Die Größe kennen – Konstante O(1)
    • Größenänderung des Vektors – Lineares O(N)

    Alle Mitgliedsfunktionen von std::vector

    Im Folgenden finden Sie eine Liste aller Mitgliedsfunktionen der Klasse std::vector in C++:

    Vektorfunktion

    Beschreibung

    push_back()

    Fügt am Ende des Vektors ein Element hinzu.

    Pop zurück()

    Entfernt das letzte Element des Vektors.

    Größe()

    Gibt die Anzahl der Elemente im Vektor zurück.

    maximale Größe()

    Gibt die maximale Anzahl von Elementen zurück, die der Vektor enthalten kann.

    Größe ändern()

    Ändert die Größe des Vektors.

    leer()

    Überprüft, ob der Vektor leer ist.

    Operator[]

    Greift auf das Element an einer bestimmten Position zu.

    bei()

    Greift an einer bestimmten Position auf das Element zu, wobei die Grenzen überprüft werden.

    Vorderseite()

    Greift auf das erste Element des Vektors zu.

    zurück()

    Greift auf das letzte Element des Vektors zu.

    beginnen()

    Gibt einen Iterator zurück, der auf das erste Element des Vektors zeigt.

    Ende()

    Gibt einen Iterator zurück, der auf das hinter dem Ende liegende Element des Vektors zeigt.

    rbegin()

    Gibt einen umgekehrten Iterator zurück, der auf das letzte Element des Vektors zeigt.

    machen()

    Gibt einen umgekehrten Iterator zurück, der auf das Element zeigt, das dem ersten Element des Vektors vorangeht.

    cbegin

    Gibt const_iterator zum Anfang zurück

    ein paar

    Gibt const_iterator zum Ende zurück

    crbegin

    Gibt const_reverse_iterator zurück, um den Anfang umzukehren

    glauben

    Gibt const_reverse_iterator an das umgekehrte Ende zurück

    einfügen()

    Fügt Elemente an einer bestimmten Position im Vektor ein.

    löschen()

    Entfernt Elemente von einer bestimmten Position oder einem bestimmten Bereich im Vektor.

    tauschen()

    Tauscht den Inhalt des Vektors mit dem eines anderen Vektors aus.

    klar()

    Entfernt alle Elemente aus dem Vektor.

    emplace()

    Konstruiert ein Element und fügt es in den Vektor ein.

    emplace_back()

    jvm in Java
    Konstruiert ein Element und fügt es am Ende des Vektors ein.

    zuordnen()

    Weist den Vektorelementen neue Werte zu, indem alte ersetzt werden.

    Kapazität()

    Gibt die Größe des aktuell dem Vektor zugewiesenen Speicherplatzes zurück.

    Reservieren()

    Fordert an, dass die Vektorkapazität mindestens ausreicht, um eine angegebene Anzahl von Elementen aufzunehmen.

    schrumpfen bis es passt()

    Reduziert die Speichernutzung durch die Freigabe ungenutzten Speicherplatzes.

    get_allocator

    Gibt eine Kopie des Allokatorobjekts zurück, das dem Vektor zugeordnet ist.

    Muss lesen:

    • Wie überprüfe ich in C++, ob ein Vektor ein bestimmtes Element enthält?
    • So finden Sie den Index eines bestimmten Elements in einem Vektor in C++
    • Sortieren eines Vektors in C++