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
- begynne() – Returnerer en iterator som peker til det første elementet i vektoren
- slutt() – Returnerer en iterator som peker på det teoretiske elementet som følger etter det siste elementet i vektoren
- rbegin() – Returnerer en omvendt iterator som peker til det siste elementet i vektoren (omvendt begynnelse). Den beveger seg fra siste til første element
- gjengi() – Returnerer en omvendt iterator som peker på det teoretiske elementet foran det første elementet i vektoren (betraktet som omvendt ende)
- cbegin() – Returnerer en konstant iterator som peker på det første elementet i vektoren.
- Noen() – Returnerer en konstant iterator som peker på det teoretiske elementet som følger det siste elementet i vektoren.
- 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
- 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
- størrelse() – Returnerer antall elementer i vektoren.
- max_size() – Returnerer det maksimale antallet elementer som vektoren kan inneholde.
- kapasitet() – Returnerer størrelsen på lagringsplassen som er allokert til vektoren uttrykt som antall elementer.
- endre størrelse (n) – Endrer størrelsen på beholderen slik at den inneholder 'n'-elementer.
- tømme() – Returnerer om beholderen er tom.
- krymp for å passe() – Reduserer beholderens kapasitet for å passe størrelsen og ødelegger alle elementer utover kapasiteten.
- 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
- referanseoperatør [g] – Returnerer en referanse til elementet ved posisjon 'g' i vektoren
- ved (g) – Returnerer en referanse til elementet ved posisjon 'g' i vektoren
- front() – Returnerer en referanse til det første elementet i vektoren
- tilbake() – Returnerer en referanse til det siste elementet i vektoren
- 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;>}>>
>
ProduksjonReference operator [g] : g1[2] = 30 at : g1.at(4) = 50 front() : g1.front() = 10 back() : g1.back() = 100 The first element is 10>
Modifikatorer
- tildele() – Den tildeler ny verdi til vektorelementene ved å erstatte gamle
- push_back() – Den skyver elementene inn i en vektor fra baksiden
- pop_back() – Den brukes til å sprette eller fjerne elementer fra en vektor fra baksiden.
- sett inn() – Den setter inn nye elementer før elementet på den angitte posisjonen
- viske ut() – Den brukes til å fjerne elementer fra en beholder fra den angitte posisjonen eller området.
- bytte() – Den brukes til å bytte innholdet i en vektor med en annen vektor av samme type. Størrelsene kan variere.
- klar() – Den brukes til å fjerne alle elementene i vektorbeholderen
- emplace() – Den forlenger beholderen ved å sette inn et nytt element på plass
- 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 vectorv1, 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] << ' '; }> >
>
ProduksjonThe 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
Legger til et element på slutten av vektoren. Fjerner det siste elementet i vektoren. Returnerer antall elementer i vektoren. max_size()
Returnerer det maksimale antallet elementer som vektoren kan inneholde. endre størrelse()
Endrer størrelsen på vektoren. 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 Setter inn elementer på en bestemt posisjon i vektoren. Fjerner elementer fra en bestemt posisjon eller område i vektoren. bytte()
Bytter innholdet i vektoren med innholdet i en annen vektor. 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++