Vektor sisse C++ Standardmalliteek (STL) koos näitega
Mis on a C++ Vektor?
A C++ vektor on dünaamiline massiiv, mis suudab enda suurust automaatselt muuta. Suuruse muutmine toimub pärast elemendi lisamist või vektorist kustutamist. Ladustamist käsitleb konteiner automaatselt. Vektori elemendid salvestatakse külgnevasse salvestusruumi. See võimaldab C++ programmeerijad pääsevad ligi ja läbivad vektorelemente iteraatorite abil.
Uute andmete sisestamine vektorisse tehakse selle lõpus. Selleks kulub erinev aeg. Elemendi eemaldamine vektorist võtab konstantse aja. Põhjus on selles, et vektori suurust pole vaja muuta. Elemendi sisestamine või kustutamine vektori alguses võtab aega lineaarselt.
Millal vektorit kasutada?
A C++ vektorit tuleks kasutada järgmistel juhtudel:
- Järjepidevalt muutuvate andmeelementidega tegelemisel.
- Kui andmete suurus pole enne alustamist teada, ei nõua vektor konteineri maksimaalse suuruse määramist.
Kuidas initsialiseerida vektoreid C++
Vektorite süntaks sisse C++ on:
vector <data-type> name (items)
- Nagu ülal näidatud, alustame vektori märksõnaga.
- Andmetüüp on vektorisse salvestatavate elementide andmetüüp.
- Nimi on vektori või andmeelementide nimi.
- Üksused tähistavad vektori andmete elementide arvu. See parameeter on valikuline.
Iteraatorid
Iteraatorite eesmärk on aidata meil pääseda juurde vektorisse salvestatud elementidele. See on objekt, mis töötab nagu osuti. Siin on levinud iteraatorid, mida toetab C++ vektorid:
- vektor:: algus(): see annab iteraatori, mis osutab vektori esimesele elemendile.
- vektor:: end(): see annab iteraatori, mis osutab vektori mineviku-lõpu elemendile.
- vektor::cbegin(): see on sama mis vektor::begin(), kuid sellel ei ole võimalust elemente muuta.
- vektor::cend(): see on sama mis vektor::end(), kuid ei saa muuta vektorelemente.
Modifikaatorid
Modifikaatoreid kasutatakse määratud andmetüübi tähenduse muutmiseks. Siin on levinumad modifikaatorid C++:
- vektor::push_back(): See modifikaator lükkab elemente tagantpoolt.
- vektor::insert(): Uute üksuste lisamiseks vektorisse kindlas kohas.
- vektor::pop_back(): See modifikaator eemaldab vektorelemendid tagaküljelt.
- vektor::kustuta(): Seda kasutatakse elementide hulga eemaldamiseks määratud asukohast.
- vektor::clear(): See eemaldab kõik vektorelemendid.
Näiteks 1
#include <iostream> #include <vector> using namespace std; int main() { vector<int> nums; for (int a = 1; a <= 5; a++) nums.push_back(a); cout << "Output from begin and end: "; for (auto a = nums.begin(); a != nums.end(); ++a) cout << *a << " "; cout << "\nOutput from cbegin and cend: "; for (auto a = nums.cbegin(); a != nums.cend(); ++a) cout << *a << " "; return 0; }
Väljund:
Siin on koodi ekraanipilt:
Koodi selgitus:
- Lisage meie koodi iostreami päisefail. See võimaldab meil konsoolist lugeda ja sinna kirjutada.
- Kaasake vektori päise fail meie koodi. See võimaldab meil töötada vektoritega C++.
- Kaasake std-nimeruum, et kasutada selle klasse ja funktsioone ilma seda kutsumata.
- Kutsuge välja main() funktsioon, mille sisse tuleks lisada programmi loogika.
- { märgib funktsiooni main() keha algust.
- Täisarvude hulga salvestamiseks deklareerige vektor nimega nums.
- Looge for-silmus, mis aitab meil vektorit itereerida. Muutuja aitab meil itereerida vektorelemente alates 1st to 5th elemente.
- Lükake elemendid tagantpoolt vektori num sisse. Iga iteratsiooni jaoks lisab see vektorisse muutuja a praeguse väärtuse, mis on 1 kuni 5.
- Printige konsoolile teksti
- Kasutage iteraatori muutujat a, et itereerida vektornumbrite elemente algusest kuni viimase lõpu elemendini. Pange tähele, et me kasutame vektor::begin() ja vektor::end() iteraatoreid.
- Printige iga iteratsiooni jaoks konsoolil väärtused, millele viitab iteraatori muutuja an.
- Printige konsoolile teksti. \n on uus rea märk, mis viib kursori uuele reale, et sealt printida.
- Kasutage iteraatori muutujat, et itereerida vektornumbrite elemente algusest kuni viimase lõpu elemendini. Pange tähele, et me kasutame vektori::cbegin() ja vektor::cend() iteraatoreid.
- Printige iga iteratsiooni jaoks konsoolil väärtused, millele viitab iteraatori muutuja a.
- Kui programm töötab edukalt, peaks põhifunktsioon tagastama väärtuse.
- Funktsiooni main() keha lõpp.
Näiteks 2
#include <iostream> #include <vector> using namespace std; int main() { vector<int> nums; nums.assign(5, 1); cout << "Vector contents: "; for (int a = 0; a < nums.size(); a++) cout << nums[a] << " "; nums.push_back(2); int n = nums.size(); cout << "\nLast element: " << nums[n - 1]; nums.pop_back(); cout << "\nVector contents: "; for (int a = 0; a < nums.size(); a++) cout << nums[a] << " "; nums.insert(nums.begin(), 7); cout << "\nFirst element: " << nums[0]; nums.clear(); cout << "\nSize after clear(): " << nums.size(); }
Väljund:
Siin on koodi ekraanipilt:
Koodi selgitus:
- Selle funktsioonide kasutamiseks lisage meie koodi iostreami päisefail.
- Selle kasutamiseks lisage meie koodi vektori päisefail funktsioonid.
- Kaasake std-nimeruum, et kasutada selle klasse ilma seda kutsumata.
- Kutsuge funktsioon main(). Programmi loogika tuleks lisada selle kehasse.
- Funktsiooni main() keha algus.
- Mõne täisarvu väärtuse salvestamiseks deklareerige vektor nimega nums.
- Talletage 5 elementi vektornumbrites. Igaühe väärtusega 1.
- Printige konsoolile teksti
- Kasutage vektornumbrite elementide itereerimiseks iteraatori muutujat a.
- Printige iga iteratsiooni jaoks konsooli vektornumbrite väärtused.
- Lisage väärtus 2 vektornumbrite lõppu.
- Deklareerige täisarvuline muutuja n, et salvestada vektori numbrite suurust.
- Printige vektori numbrite viimane väärtus muu teksti kõrvale. See peaks tagastama 2.
- Eemaldage vektorite numbritest viimane element. 2 eemaldatakse.
- Printige tekst konsoolile. \n viib kursori uuele reale, et trükkida sinna tekst.
- Kasutage vektornumbrite elementide itereerimiseks iteraatori muutujat a.
- Printige iga iteratsiooni jaoks konsooli vektornumbrite väärtused.
- Sisestage väärtus 7 vektori numbrite algusesse.
- Printige vektori numbrite esimene väärtus muu teksti kõrvale. See peaks tagasi tulema 7.
- Kustutage vektori numbritest kõik elemendid.
- Pärast kogu sisu kustutamist printige vektori numbri suurus koos muu tekstiga. See peaks tagastama 0.
- Funktsiooni main() keha lõpp.
Võimsus
Kasutage vektori võimsuse määramiseks järgmisi funktsioone:
- Suurus () –Tagastab üksuste arvu vektoris.
- Max_size() -See tagastab suurima arvu üksusi, mida vektor saab salvestada.
- Maht () – See tagastab vektorile eraldatud salvestusruumi mahu.
- Suuruse muutmine () – see muudab konteineri suurust nii, et see sisaldaks n üksust. Kui vektori praegune suurus on suurem kui n, eemaldatakse tagumised elemendid vektorist. Kui vektori praegune suurus on väiksem kui n, lisatakse vektori tagaküljele täiendavad üksused.
- Tühi () –it tagastab väärtuse tõene, kui vektor on tühi. Vastasel juhul tagastab see vale.
Näiteks 3
#include <iostream> #include <vector> using namespace std; int main() { vector<int> vector1; for (int x = 1; x <= 10; x++) vector1.push_back(x); cout << "Vector size: " << vector1.size()<< endl; cout << "Vector capacity: " << vector1.capacity() << endl; cout << "Maximum size of vector: " << vector1.max_size()<< endl; vector1.resize(5); cout << "Vector size after resizing: " << vector1.size() << endl; if (vector1.empty() == false) cout << "Vector is not empty"<<endl; else cout << "Vector is empty"<<endl; return 0; }
Väljund:
Siin on koodi ekraanipilt:
Koodi selgitus:
- Selle funktsiooni kasutamiseks lisage meie koodi iostreami päisefail.
- Selle funktsioonide kasutamiseks lisage meie koodi vektori päisefail.
- Lisage meie koodi std nimeruum, et kasutada selle klasse ilma seda kutsumata.
- Kutsuge funktsioon main(). Programmi loogika tuleks lisada selle funktsiooni kehasse.
- Looge täisarvude salvestamiseks vektor nimega vektor1.
- Kasutage tsüklit for, et luua muutuja x väärtustega 1 kuni 10.
- Lükake muutuja x väärtused vektorisse.
- Printige vektori suurus koos muu konsooli tekstiga.
- Printige vektori mahutavus koos muu konsooli tekstiga.
- Printige koos muu konsooli tekstiga maksimaalne arv elemente, mida vektor mahutab.
- Muutke vektori suurust nii, et see mahutaks ainult 5 elementi.
- Printige vektori uus suurus koos muu tekstiga.
- Kontrollige, kas vektor pole tühi.
- Kui vektor pole tühi, printige tekst konsoolile.
- Kasutage käsku else, et öelda, mida teha, kui vektor on tühi.
- Tekst, mis prinditakse konsoolil, kui vektor on tühi.
- Programm peab pärast edukat lõpetamist tagastama väärtuse.
- Funktsiooni main() keha lõpp.
kokkuvõte
- A C++ vektor on dünaamiline massiiv, mis suudab automaatselt enda suurust muuta, kui element sellele lisatakse või sealt kustutatakse.
- Vektori salvestust haldab konteiner automaatselt.
- Vektori elemendid salvestatakse külgnevasse salvestusruumi, et neile pääseda juurde ja seejärel iteraatorite abil läbida.
- Uute andmete sisestamine vektorisse toimub selle lõpus.
- Andmete sisestamine vektorisse võtab aega.
- Elemendi eemaldamine vektorist võtab konstantse aja.
- Elemendi sisestamine või kustutamine alguses võtab lineaarset aega.
- Järjepidevalt muutuvate andmeelementide käsitlemisel tuleks kasutada vektoreid.
- Samuti võite kasutada vektoreid, kui andmete suurus pole enne alustamist teada.