logo

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

>

huffman-kodekode
>

Produksjon

noe rask sortering
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

    erstatte alt
    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++