Vektor be C++ Szabványos sablonkönyvtár (STL) példával
Mi az a C++ Vektor?
A C++ vektor egy dinamikus tömb, amely képes automatikusan átméretezni magát. Az átméretezés egy elem hozzáadása vagy törlése után történik a vektorból. A tárolást a konténer automatikusan kezeli. Egy vektor elemei egymás melletti tárolóban vannak tárolva. Ez lehetővé teszi C++ programozók a vektorelemek elérésére és bejárására iterátorok segítségével.
Az új adatok beszúrása egy vektorba annak végén történik. Ez különbségi időt vesz igénybe. Egy elem eltávolítása a vektorból állandó időt vesz igénybe. Ennek az az oka, hogy nincs szükség a vektor átméretezésére. Egy elem beszúrása vagy törlése a vektor elején lineáris időt vesz igénybe.
Mikor használjunk vektort?
A C++ vektort a következő körülmények között kell használni:
- A következetesen változó adatelemek kezelésekor.
- Ha az adatok mérete nem ismert a kezdés előtt, akkor a vektornak nem kell beállítania a tároló maximális méretét.
Hogyan inicializáljuk a vektorokat C++
A vektorok szintaxisa in C++ a következő:
vector <data-type> name (items)
- Amint fentebb látható, a vektor kulcsszóval kezdjük.
- Az adattípus a vektorban tárolandó elemek adattípusa.
- A név a vektor vagy az adatelemek neve.
- Az elemek a vektoradatok elemeinek számát jelölik. Ez a paraméter nem kötelező.
Iterátorok
Az iterátorok célja, hogy segítsenek elérni a vektorban tárolt elemeket. Ez egy objektum, amely mutatóként működik. Itt vannak a által támogatott gyakori iterátorok C++ vektorok:
- vektor:: kezd(): egy iterátort ad, amely a vektor első elemére mutat.
- vektor:: end(): egy iterátort ad, amely a vektor múlt-vége elemére mutat.
- vektor::cbegin(): ugyanaz, mint a vector::begin(), de nem képes elemeket módosítani.
- vektor::cend(): ez ugyanaz, mint a vector::end(), de nem tudja módosítani a vektorelemeket.
Módosítók
A módosítók a megadott adattípus jelentésének megváltoztatására szolgálnak. Itt vannak a gyakori módosítók C++:
- vektor::push_back(): Ez a módosító hátulról tolja az elemeket.
- vektor::insert(): Új elemek beszúrásához egy vektorba egy megadott helyen.
- vektor::pop_back(): Ez a módosító eltávolítja a vektorelemeket a hátulról.
- vektor::törlés(): Egy sor elem eltávolítására szolgál a megadott helyről.
- vektor::clear(): Eltávolítja az összes vektorelemet.
Példa 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; }
output:
Itt van egy képernyőkép a kódról:
Kód magyarázata:
- Szerelje be az iostream fejlécfájlt a kódunkba. Lehetővé teszi számunkra, hogy olvassunk a konzolról és írjunk oda.
- Szerelje be a vektorfejléc fájlt a kódunkba. Lehetővé teszi számunkra, hogy vektorokkal dolgozzunk C++.
- Szerelje be az std névteret, hogy az osztályait és függvényeit hívás nélkül használhassa.
- Hívja meg a main() függvényt, amelyen belül a program logikáját hozzá kell adni.
- A { a main() függvény törzsének kezdetét jelöli.
- Deklaráljon egy nums nevű vektort egész számok halmazának tárolására.
- Hozzon létre egy for ciklust, amely segít nekünk a vektor feletti iterációban. A változó segít nekünk a vektorelemek feletti iterációban, 1-tőlst A 5th elemek.
- Tolja be hátulról az elemeket a num vektorba. Ez minden iterációnál hozzáadja az a változó aktuális értékét a vektorhoz, amely 1 és 5 között van.
- Nyomtasson szöveget a konzolra
- Használjon a iterátorváltozót a vektorszámok elemeinek iterálásához az elejétől a végponti elemig. Megjegyzés: vektor::begin() és vektor::end() iterátorokat használunk.
- Nyomtassa ki az iterátorváltozó által mutatott értékeket a konzolon minden iterációhoz.
- Nyomtasson szöveget a konzolra. A \n egy új sorkarakter, amely a kurzort az új sorra mozgatja, és onnan nyomtat.
- Használjon iterátorváltozót a vektorszámok elemeinek iterálásához az elejétől az utolsó elemig. Megjegyzés: vektor::cbegin() és vektor::cend() iterátorokat használunk.
- Nyomtassa ki az a iterátorváltozó által mutatott értékeket a konzolon minden iterációhoz.
- A fő függvénynek értéket kell visszaadnia, ha a program sikeresen fut.
- A main() függvény törzsének vége.
Példa 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(); }
output:
Itt van egy képernyőkép a kódról:
Kód magyarázata:
- Szerelje be az iostream fejlécfájlt a kódunkba a funkcióinak használatához.
- Illessze be a vektorfejléc fájlt a kódunkba a használatához funkciók.
- Szerelje be az std névteret az osztályok használatához anélkül, hogy meghívná.
- Hívja meg a main() függvényt. A program logikáját hozzá kell adni a törzséhez.
- A main() függvény törzsének kezdete.
- Deklaráljon egy nums nevű vektort néhány egész érték tárolására.
- Tároljon 5 elemet a vektorszámokban. Mindegyik 1-es értékkel.
- Nyomtasson szöveget a konzolra
- Használjon a iterátorváltozót a vektorszámok elemeinek iterálásához.
- Nyomtassa ki a vektorszámok értékeit a konzolon minden iterációhoz.
- Adja hozzá a 2-es értéket a vektorszámok végéhez.
- Deklaráljon egy n egész változót a vektorszámok méretének tárolására.
- Nyomtassa ki a vektorszámok utolsó értékét a többi szöveg mellé. 2-t kell visszaadnia.
- Távolítsa el az utolsó elemet a vektorszámokból. A 2 eltávolításra kerül.
- Szöveg nyomtatása a konzolon. A \n az új sorra mozgatja a kurzort, hogy ott kinyomtassa a szöveget.
- Használjon a iterátorváltozót a vektorszámok elemeinek iterálásához.
- Nyomtassa ki a vektorszámok értékeit a konzolon minden iterációhoz.
- Szúrja be a 7-es értéket a vektorszámok elejére.
- Nyomtassa ki a vektorszámok első értékét a többi szöveg mellé. 7-nek kell visszatérnie.
- Törölje az összes elemet a vektorszámokból.
- Az összes tartalom törlése után nyomtassa ki a vektor num méretét a többi szöveg mellé. 0-t kell visszaadnia.
- A main() függvény törzsének vége.
Kapacitás
Egy vektor kapacitásának meghatározásához használja a következő függvényeket:
- Méret () –Egy vektor elemeinek számát adja vissza.
- Max_size() -A vektor által tárolható legmagasabb számú elemet adja vissza.
- Kapacitás () – Ez visszaadja a vektorhoz lefoglalt tárterület mennyiségét.
- Átméretezés () – Ez átméretezi a tárolót, hogy n elemet tartalmazzon. Ha a vektor aktuális mérete nagyobb, mint n, a hátsó elemek el lesznek távolítva a vektorból. Ha a vektor aktuális mérete kisebb, mint n, akkor a vektor hátuljára további elemek kerülnek hozzáadásra.
- Üres () –it igaz értéket ad vissza, ha egy vektor üres. Ellenkező esetben hamis értéket ad vissza.
Példa 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; }
output:
Itt van egy képernyőkép a kódról:
Kód magyarázata:
- Szerelje be az iostream fejlécfájlt a kódunkba a funkciójának használatához.
- Szerelje be a vektorfejléc fájlt a kódunkba a funkcióinak használatához.
- Szerelje be az std névteret a kódunkba, hogy az osztályait hívás nélkül használhassa.
- Hívja meg a main() függvényt. A program logikáját hozzá kell adni a függvény törzséhez.
- Hozzon létre egy vektor1 nevű vektort egész számok tárolására.
- Használja a for ciklust az x változó létrehozásához 1 és 10 közötti értékekkel.
- Tolja be az x változó értékeit a vektorba.
- Nyomtassa ki a vektor méretét a többi szöveg mellé a konzolon.
- Nyomtassa ki a vektor kapacitását a konzolon lévő többi szöveg mellé.
- Nyomtassa ki a vektorban tárolható elemek maximális számát a konzolon található egyéb szövegek mellett.
- Méretezze át a vektort, hogy csak 5 elem legyen.
- Nyomtassa ki a vektor új méretét a többi szöveg mellé.
- Ellenőrizze, hogy a vektor nem üres-e.
- Nyomtasson szöveget a konzolon, ha a vektor nem üres.
- Használjon else utasítást annak meghatározására, hogy mit kell tenni, ha a vektor üres.
- A konzolon nyomtatandó szöveg, ha a vektor üres.
- A programnak értéket kell visszaadnia a sikeres befejezés után.
- A main() függvénytörzs vége.
Összegzésként
- A C++ A vektor egy dinamikus tömb, amely képes automatikusan átméretezni magát, amikor egy elemet hozzáadunk vagy törölünk belőle.
- A vektor tárolását a tároló automatikusan kezeli.
- A vektorok elemeit egy összefüggő tárolóban tárolják, hogy elérjék őket, majd iterátorok segítségével bejárják őket.
- Az új adatok vektorba történő beillesztése annak végén történik.
- Az adatok vektorba történő beillesztése eltérő időt vesz igénybe.
- Egy elem eltávolítása a vektorból állandó időt vesz igénybe.
- Egy elem beszúrása vagy törlése az elején lineáris időt vesz igénybe.
- A következetesen változó adatelemek kezelésekor vektorokat kell használni.
- Akkor is használhat vektorokat, ha az adatok mérete nem ismert a kezdet előtt.