Vektor i C++ STL

Vektorer er de samme som dynamiske matriser med muligheten til å endre størrelsen på seg selv automatisk når et element settes inn eller slettes, og lagringen deres håndteres automatisk av beholderen. Vektorelementer er plassert i sammenhengende lagring slik at de kan nås og krysses ved hjelp av iteratorer. I vektorer settes data inn på slutten. Å sette inn på slutten tar differensiell tid, ettersom arrayet noen ganger må utvides. Å fjerne det siste elementet tar bare konstant tid fordi det ikke skjer noen endring av størrelse. Innsetting og sletting i begynnelsen eller i midten er lineært i tid.

Hva er std::vektor i C++?

std::vektor i C++ er klassemalen som inneholder vektorbeholderen og dens medlemsfunksjoner. Det er definert inne i header-fil. Medlemsfunksjonene til std::vector-klassen gir ulike funksjoner til vektorbeholdere.

Syntaks for å deklarere vektor i C++

  std::vector   vectorName; 

der datatypen er typen data for hvert element i vektoren. Du kan fjerne std:: hvis du allerede har brukt std navneområdet.

Initialisering av Vector i C++

Vi kan initialisere en vektor på følgende måter:

1. Initialisering ved hjelp av liste

Denne initialiseringen gjøres med en erklæring. Her sender vi listen over elementer til vektorkonstruktøren for å lage en vektor med de spesifiserte elementene.

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

2. Initialisering Med en enkelt verdi

Denne initialiseringen gjøres også med erklæring. Her spesifiserer vi størrelsen på vektoren og initialiserer deretter hvert element i vektoren med verdien.

  vector   name(size, value); 

3. Initialisering fra en annen vektor

Denne initialiseringen brukes til å lage en vektor som er en eksakt kopi av other_vec.

  vector   name(other_vec); 

Noen ofte brukte medlemsfunksjoner til std::vektorklassen er skrevet nedenfor:

Iteratorer

  1. begynne() – Returnerer en iterator som peker til det første elementet i vektoren
  2. slutt() – Returnerer en iterator som peker på det teoretiske elementet som følger etter det siste elementet i vektoren
  3. rbegin() – Returnerer en omvendt iterator som peker til det siste elementet i vektoren (omvendt begynnelse). Den beveger seg fra siste til første element
  4. gjengi() – Returnerer en omvendt iterator som peker på det teoretiske elementet foran det første elementet i vektoren (betraktet som omvendt ende)
  5. cbegin() – Returnerer en konstant iterator som peker på det første elementet i vektoren.
  6. Noen() – Returnerer en konstant iterator som peker på det teoretiske elementet som følger det siste elementet i vektoren.
  7. crbegin() – Returnerer en konstant revers iterator som peker til det siste elementet i vektoren (omvendt begynnelse). Den beveger seg fra siste til første element
  8. crend() – Returnerer en konstant omvendt iterator som peker til det teoretiske elementet foran det første elementet i vektoren (betraktet som omvendt ende)

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;> }>

Produksjon

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 

Kapasitet

  1. størrelse() – Returnerer antall elementer i vektoren.
  2. max_size() – Returnerer det maksimale antallet elementer som vektoren kan inneholde.
  3. kapasitet() – Returnerer størrelsen på lagringsplassen som er allokert til vektoren uttrykt som antall elementer.
  4. endre størrelse (n) – Endrer størrelsen på beholderen slik at den inneholder 'n'-elementer.
  5. tømme() – Returnerer om beholderen er tom.
  6. krymp for å passe() – Reduserer beholderens kapasitet for å passe størrelsen og ødelegger alle elementer utover kapasiteten.
  7. reservere() – Ber om at vektorkapasiteten er minst nok til å inneholde n elementer.

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;> }>

Produksjon

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

Elementtilgang

  1. referanseoperatør [g] – Returnerer en referanse til elementet ved posisjon 'g' i vektoren
  2. ved (g) – Returnerer en referanse til elementet ved posisjon 'g' i vektoren
  3. front() – Returnerer en referanse til det første elementet i vektoren
  4. tilbake() – Returnerer en referanse til det siste elementet i vektoren
  5. C++




    // 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;> }>

    Produksjon

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

    Modifikatorer

    1. tildele() – Den tildeler ny verdi til vektorelementene ved å erstatte gamle
    2. push_back() – Den skyver elementene inn i en vektor fra baksiden
    3. pop_back() – Den brukes til å sprette eller fjerne elementer fra en vektor fra baksiden.
    4. sett inn() – Den setter inn nye elementer før elementet på den angitte posisjonen
    5. viske ut() – Den brukes til å fjerne elementer fra en beholder fra den angitte posisjonen eller området.
    6. bytte() – Den brukes til å bytte innholdet i en vektor med en annen vektor av samme type. Størrelsene kan variere.
    7. klar() – Den brukes til å fjerne alle elementene i vektorbeholderen
    8. emplace() – Den forlenger beholderen ved å sette inn et nytt element på plass
    9. emplace_back() – Den brukes til å sette inn et nytt element i vektorbeholderen, det nye elementet legges til på slutten av vektoren

    C++




    // C++ program to illustrate the> // Modifiers in vector> #include> #include> using> namespace> std;> > int> main()> {> > // Assign vector> > vector <> int> >i;> > > // 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] < < ' '; }>

    Produksjon

    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 

    Tidskompleksiteten for å utføre forskjellige operasjoner på vektorer er-

    • Tilfeldig tilgang – konstant O(1)
    • Innsetting eller fjerning av elementer på slutten – konstant O(1)
    • Innsetting eller fjerning av elementer – lineær i avstanden til enden av vektoren O(N)
    • Å kjenne størrelsen – konstant O(1)
    • Endre størrelsen på vektoren - Lineær O(N)

    Alle medlemsfunksjoner til std::vector

    Følgende er listen over alle medlemsfunksjonene til std::vektorklassen i C++:

    Vektor funksjon

    Beskrivelse

    push_back()

    Legger til et element på slutten av vektoren.

    pop_back()

    Fjerner det siste elementet i vektoren.

    størrelse()

    Returnerer antall elementer i vektoren.

    max_size()

    Returnerer det maksimale antallet elementer som vektoren kan inneholde.

    endre størrelse()

    Endrer størrelsen på vektoren.

    tømme()

    Sjekker om vektoren er tom.

    operatør[]

    Får tilgang til elementet på en bestemt posisjon.

    på()

    Får tilgang til elementet på en bestemt posisjon, med grensekontroll.

    front()

    Får tilgang til det første elementet i vektoren.

    tilbake()

    Får tilgang til det siste elementet i vektoren.

    begynne()

    Returnerer en iterator som peker på det første elementet i vektoren.

    slutt()

    Returnerer en iterator som peker til elementet forbi-slutt i vektoren.

    rbegin()

    Returnerer en omvendt iterator som peker til det siste elementet i vektoren.

    gjengi()

    Returnerer en omvendt iterator som peker på elementet foran det første elementet i vektoren.

    cbegynn

    Returnerer const_iterator til begynnelsen

    Noen

    Returnerer const_iterator til slutt

    begynne

    Returnerer const_reverse_iterator for å reversere begynnelsen

    tro

    Returnerer const_reverse_iterator for å reversere slutten

    sett inn()

    Setter inn elementer på en bestemt posisjon i vektoren.

    viske ut()

    Fjerner elementer fra en bestemt posisjon eller område i vektoren.

    bytte()

    Bytter innholdet i vektoren med innholdet i en annen vektor.

    klar()

    Fjerner alle elementer fra vektoren.

    emplace()

    Konstruerer og setter inn et element i vektoren.

    emplace_back()

    Konstruerer og setter inn et element på slutten av vektoren.

    tildele()

    Tildeler nye verdier til vektorelementene ved å erstatte gamle.

    kapasitet()

    Returnerer størrelsen på lagringsplassen som er allokert til vektoren.

    reservere()

    Ber om at vektorkapasiteten er minst nok til å inneholde et spesifisert antall elementer.

    krymp for å passe()

    Reduserer minnebruk ved å frigjøre ubrukt plass.

    get_allocator

    Returnerer en kopi av allokeringsobjektet knyttet til vektoren.

    Må lese:

    • Hvordan sjekke om en vektor inneholder et gitt element i C++?
    • Hvordan finne indeksen til et gitt element i en vektor i C++
    • Sortere en vektor i C++