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:

Módosítók

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

Módosítók

Kód magyarázata:

  1. Szerelje be az iostream fejlécfájlt a kódunkba. Lehetővé teszi számunkra, hogy olvassunk a konzolról és írjunk oda.
  2. Szerelje be a vektorfejléc fájlt a kódunkba. Lehetővé teszi számunkra, hogy vektorokkal dolgozzunk C++.
  3. Szerelje 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 a program logikáját hozzá kell adni.
  5. A { a main() függvény törzsének kezdetét jelöli.
  6. Deklaráljon egy nums nevű vektort egész számok halmazának tárolására.
  7. 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.
  8. 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.
  9. Nyomtasson szöveget a konzolra
  10. 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.
  11. Nyomtassa ki az iterátorváltozó által mutatott értékeket a konzolon minden iterációhoz.
  12. Nyomtasson szöveget a konzolra. A \n egy új sorkarakter, amely a kurzort az új sorra mozgatja, és onnan nyomtat.
  13. 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.
  14. Nyomtassa ki az a iterátorváltozó által mutatott értékeket a konzolon minden iterációhoz.
  15. A fő függvénynek értéket kell visszaadnia, ha a program sikeresen fut.
  16. 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:

Módosítók

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

Módosítók

Kód magyarázata:

  1. Szerelje be az iostream fejlécfájlt a kódunkba a funkcióinak használatához.
  2. Illessze be a vektorfejléc fájlt a kódunkba a használatához funkciók.
  3. Szerelje be az std névteret az osztályok használatához anélkül, hogy meghívná.
  4. Hívja meg a main() függvényt. A program logikáját hozzá kell adni a törzséhez.
  5. A main() függvény törzsének kezdete.
  6. Deklaráljon egy nums nevű vektort néhány egész érték tárolására.
  7. Tároljon 5 elemet a vektorszámokban. Mindegyik 1-es értékkel.
  8. Nyomtasson szöveget a konzolra
  9. Használjon a iterátorváltozót a vektorszámok elemeinek iterálásához.
  10. Nyomtassa ki a vektorszámok értékeit a konzolon minden iterációhoz.
  11. Adja hozzá a 2-es értéket a vektorszámok végéhez.
  12. Deklaráljon egy n egész változót a vektorszámok méretének tárolására.
  13. Nyomtassa ki a vektorszámok utolsó értékét a többi szöveg mellé. 2-t kell visszaadnia.
  14. Távolítsa el az utolsó elemet a vektorszámokból. A 2 eltávolításra kerül.
  15. Szöveg nyomtatása a konzolon. A \n az új sorra mozgatja a kurzort, hogy ott kinyomtassa a szöveget.
  16. Használjon a iterátorváltozót a vektorszámok elemeinek iterálásához.
  17. Nyomtassa ki a vektorszámok értékeit a konzolon minden iterációhoz.
  18. Szúrja be a 7-es értéket a vektorszámok elejére.
  19. Nyomtassa ki a vektorszámok első értékét a többi szöveg mellé. 7-nek kell visszatérnie.
  20. Törölje az összes elemet a vektorszámokból.
  21. 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.
  22. 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:

Kapacitás

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

Kapacitás

Kód magyarázata:

  1. Szerelje be az iostream fejlécfájlt a kódunkba a funkciójának használatához.
  2. Szerelje be a vektorfejléc fájlt a kódunkba a funkcióinak használatához.
  3. Szerelje be 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áját hozzá kell adni a függvény törzséhez.
  5. Hozzon létre egy vektor1 nevű vektort egész számok tárolására.
  6. Használja a for ciklust az x változó létrehozásához 1 és 10 közötti értékekkel.
  7. Tolja be az x változó értékeit a vektorba.
  8. Nyomtassa ki a vektor méretét a többi szöveg mellé a konzolon.
  9. Nyomtassa ki a vektor kapacitását a konzolon lévő többi szöveg mellé.
  10. Nyomtassa ki a vektorban tárolható elemek maximális számát a konzolon található egyéb szövegek mellett.
  11. Méretezze át a vektort, hogy csak 5 elem legyen.
  12. Nyomtassa ki a vektor új méretét a többi szöveg mellé.
  13. Ellenőrizze, hogy a vektor nem üres-e.
  14. Nyomtasson szöveget a konzolon, ha a vektor nem üres.
  15. Használjon else utasítást annak meghatározására, hogy mit kell tenni, ha a vektor üres.
  16. A konzolon nyomtatandó szöveg, ha a vektor üres.
  17. A programnak értéket kell visszaadnia a sikeres befejezés után.
  18. 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.