Vektor a C ++ szabványos sablonkönyvtárban (STL) a példával

Tartalomjegyzék:

Anonim

Mi az a C ++ vektor?

A C ++ VECTOR 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 következik be a vektorból. A tárolót a tároló automatikusan kezeli. A vektor elemeit egymás mellett tárolják. Ez lehetővé teszi a C ++ programozók számára, hogy az iterátorok segítségével hozzáférjenek a vektorelemekhez és azokon haladjanak.

Új adatok beszúrása egy vektorba annak végén történik. Ez különbözõ idõt vesz igénybe. Egy elem eltávolítása a vektorból állandó időt vesz igénybe. Ennek oka az, hogy nincs szükség a vektor átméretezésére. Egy elem beillesztése vagy törlése a vektor elején lineáris időt vesz igénybe.

Ebben a C ++ oktatóanyagban megtudhatja:

  • Mi az a C ++ vektor?
  • Mikor kell vektort használni?
  • A vektorok inicializálása C ++ nyelven
  • Iterátorok
  • Módosítók
  • 1. példa
  • 2. példa
  • Kapacitás
  • 3. példa

Mikor kell vektort használni?

C ++ vektort kell használni a következő körülmények között:

  • Ha következetesen változó adatelemekkel foglalkozunk.
  • Ha az adatok mérete a kezdet előtt nem ismert, a vektor nem követeli meg a tároló maximális méretének beállítását.

A vektorok inicializálása C ++ nyelven

A C ++ vektorok szintaxisa:

vector  name (items)
  • A fentiek szerint 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 vektor adatainak elemszámát jelölik. Ez a paraméter nem kötelező.

Iterátorok

Az iterátorok célja, hogy segítsünk elérni a vektorban tárolt elemeket. Ez egy objektum, amely úgy működik, mint egy mutató. Itt vannak a C ++ vektorok által támogatott gyakori iterátorok:

  • vector :: begin (): iterátort ad, amely a vektor első elemére mutat.
  • vector :: end (): iterátort ad, amely a vektor múlt-vég elemére mutat.
  • vector :: cbegin (): ugyanaz, mint a vector :: begin (), de nem képes elemeket módosítani.
  • vector :: cend (): ugyanaz, mint a vector :: end (), de nem módosíthatja a vektor elemeket.

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 C ++ általános módosítói:

  • vector :: push_back (): Ez a módosító hátulról tolja el az elemeket.
  • vector :: insert (): Új elemek beszúrásához egy vektorhoz egy megadott helyen.
  • vector :: pop_back (): Ez a módosító eltávolítja a vektor elemeket hátulról.
  • vector :: erase (): Elemtartomány eltávolítására szolgál a megadott helyről.
  • vector :: clear (): Eltávolítja az összes vektor elemet.

1. példa

#include #include using namespace std;int main(){vector 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;}

Kimenet:

Itt van egy képernyőkép a kódról:

Kód Magyarázat:

  1. Vegye fel az iostream fejlécfájlt a kódunkba. Ez lehetővé teszi számunkra, hogy a konzolról olvassunk és írjunk.
  2. Vegye fel a vektor fejléc fájlt a kódunkba. Ez lehetővé teszi számunkra, hogy C ++ vektorokkal dolgozzunk.
  3. Tartsa be az std névteret, hogy az osztályait és függvényeit hívás nélkül használhassa.
  4. Hívja meg a main () függvényt, amelyen belül hozzá kell adni a program logikáját.
  5. A {a main () függvény törzsének kezdetét jelöli.
  6. Nyújtson be egy nums nevű vektort egész számok tárolására.
  7. Hozzon létre egy for ciklust, hogy könnyebben iterálhassunk a vektor felett. A változó segít iterálása a vektor elemek, 1 st 5 -én elemeket.
  8. Tolja az elemeket a vektor vektor számba hátulról. Minden iterációnál ez hozzáadja a vektor változójának aktuális értékét, amely 1 és 5 közötti.
  9. Nyomtasson ki egy kis szöveget a konzolra
  10. Használjon egy iterátor változót a vektor számok elemeinek iterálásához az elejétől a múlt végéig elemig. Ne feledje, hogy a vector :: begin () és a vector :: end () iterátorokat használjuk.
  11. Nyomtassa ki az iterátor változó által rámutatott értékeket a konzolon minden egyes iterációhoz.
  12. Nyomtasson ki egy kis szöveget a konzolra. A \ n új vonalkarakter, amely a kurzort az új sorra mozgatja, és onnan nyomtat.
  13. Használjon iterátor változót a vektor számok elemeinek iterációjához az elejétől a múlt végéig elemig. Ne feledje, hogy a vector :: cbegin () és a vector :: cend () iterátorokat használjuk.
  14. Minden iterációhoz nyomtassa ki a konzolon az a iterátor változó által mutatott értékeket.
  15. A fő funkciónak vissza kell adnia egy értéket, ha a program sikeresen fut.
  16. A fő () függvény törzsének vége.

2. példa

#include #include using namespace std;int main(){vector 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();}

Kimenet:

Itt van egy képernyőkép a kódról:

Kód Magyarázat:

  1. A funkcióinak használatához vegye fel az iostream fejlécfájlt kódunkba.
  2. Foglalja be a vektor fejlécfájlt a kódunkba annak funkcióinak használatához.
  3. Tartsa be az std névteret, hogy az osztályait hívás nélkül használhassa.
  4. Hívja meg a main () függvényt. A program logikát hozzá kell adni a törzséhez.
  5. A fő () függvény törzsének kezdete.
  6. Hirdessen egy nums nevű vektort néhány egész érték tárolására.
  7. Tároljon 5 elemet a vektor számokban. Mindegyik értéke 1.
  8. Nyomtasson ki egy kis szöveget a konzolra
  9. Használjon egy a iterátor változót a vektor számok elemeinek ismétléséhez.
  10. Nyomtassa ki a vektor számok értékeit a konzolra minden egyes iterációhoz.
  11. Adja hozzá a 2 értéket a vektor számok végéhez.
  12. Nyújtson be egy n egész változót a vektorszámok tárolására.
  13. Nyomtassa ki a vektor számok utolsó értékét más szöveg mellé. Vissza kell adnia egy 2-t.
  14. Távolítsa el az utolsó elemet a vektor számokból. A kettő eltávolításra kerül.
  15. Szöveg nyomtatása a konzolra. A \ n áthelyezi a kurzort az új sorra, hogy kinyomtassa a szöveget.
  16. Használjon egy a iterátor változót a vektor számok elemeinek ismétléséhez.
  17. Nyomtassa ki a vektor számok értékeit a konzolra minden egyes iterációhoz.
  18. Helyezze be a 7 értéket a vektor számok elejére.
  19. A vektor számok első értékét más szöveg mellett nyomtassa ki. Vissza kell térnie 7.
  20. Töröljön minden elemet a vektor számokból.
  21. Az összes tartalom törlése után nyomtassa ki a vektor szám méretét a többi szöveg mellé. 0-t kell adnia.
  22. A fő () függvény törzsének vége.

Kapacitás

Az alábbi függvényekkel meghatározhatja a vektor kapacitását:

  • Méret () - Egy vektor elemeinek számát adja vissza.
  • Max_size () - A legtöbb elemet adja vissza, amelyet egy vektor tárolhat.
  • Kapacitás () - Visszaadja a vektor számára lefoglalt tárterület mennyiségét.
  • Átméretezés () - A tároló átméretezése n elemet tartalmaz. Ha a vektor jelenlegi mérete nagyobb, mint n, a hátsó elemek eltávolításra kerülnek a vektorból. Ha a vektor jelenlegi mérete kisebb, mint n, akkor további elemek kerülnek a vektor hátuljába.
  • Az üres () -i t értéke igaz, ha egy vektor üres, máskülönben hamis értéket ad vissza.

3. példa

#include #include using namespace std;int main() {vector 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"<

Kimenet:

Itt van egy képernyőkép a kódról:

Kód Magyarázat:

  1. A funkció használatához vegye fel az iostream fejlécfájlt a kódunkba.
  2. Foglalja be a vektor fejlécfájlt a kódunkba annak funkcióinak használatához.
  3. Vegye fel az std névteret a kódunkba, hogy az osztályait hívás nélkül használhassa.
  4. Hívja meg a main () függvényt. A program logikát hozzá kell adni ennek a függvénynek a törzséhez.
  5. Hozzon létre egy vector1 nevű vektort az egész számok tárolásához.
  6. Használjon a for ciklust az x változó létrehozásához 1 és 10 közötti értékekkel.
  7. Tolja az x változó értékeit a vektorba.
  8. Nyomtassa ki a vektor méretét a konzolon lévő többi szöveg mellé.
  9. Nyomtassa ki a vektor kapacitását a konzolon lévő többi szöveg mellett.
  10. Kinyomtatja a vektoron a tételek maximális számát a konzolon lévő többi szöveg mellett.
  11. A vektor átméretezése csak 5 elem befogadására szolgál.
  12. Nyomtassa ki a vektor új méretét más szöveg mellé.
  13. Ellenőrizze, hogy a vektor nem üres-e.
  14. Ha a vektor nem üres, nyomtasson szöveget a konzolra.
  15. Használjon egy else utasítást, hogy mit kell tennie, ha a vektor üres.
  16. A konzolra nyomtatandó szöveg, ha a vektor üres.
  17. A programnak a sikeres befejezés után vissza kell térnie az értékre.
  18. A fő () függvénytest vége.

Összegzés:

  • A C ++ vektor egy dinamikus tömb, amely képes automatikusan átméretezni magát, amikor egy elemet hozzáadnak vagy törölnek belőle.
  • A vektor tárolását a tároló automatikusan kezeli.
  • A vektor elemeit egybefüggő tárolóban tárolják, hogy hozzájuk férjenek, majd az iterátorok segítségével bejárják őket.
  • Új adatok beszúrása egy vektorba 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 beillesztése vagy törlése az elején lineáris időt vesz igénybe.
  • A következetesen változó adatelemekkel való foglalkozáskor vektorokat kell használni.
  • Akkor is használhat vektorokat, ha az adatok mérete nem ismert a kezdet előtt.