Vektor be C++ Szabványos sablonkönyvtár (STL) példával

⚡ Okos összefoglaló

Vektor be C++ egy dinamikus tömb a Standard Template Library-ből, amely automatikusan átméretezi magát az elemek hozzáadásakor vagy eltávolításakor, és az elemeket összefüggő memóriában tárolja, így a programozók iterátorok segítségével elérhetik és bejárhatják azokat.

  • 📦 Dinamikus tömb: A C++ A vektor automatikusan növekszik vagy zsugorodik, ellentétben egy fix méretű statikus tömbbel.
  • 🧩 Fejléc és szintaxis: Illeszd be a vektor fejlécet, majd deklaráld a vektort név a beírt elemek tárolására.
  • 🧭 Iterátorok: A begin(), end(), cbegin() és cend() függvények mutatókhoz hasonlóan mozognak a vektorelemek között.
  • 🇧🇷 Módosítók: A push_back(), insert(), pop_back(), erase() és clear() függvények megváltoztatják a vektorok tartalmát.
  • 📐 Kapacitás: A size(), capacity(), max_size(), resize( és empty() függvények a tárhely jelentését vagy beállítását végzik.
  • 🤖 AI segítség: GitHub Copilot és hasonló MI-asszisztensek állványvektor-műveleteit egy rövid megjegyzésből.

C++ Vektor STL

Mi az a C++ Vektor?

A C++ A 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 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 a végén történik. Ez differenciális időt vesz igénybe. Egy elem eltávolítása a vektorból konstans 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éről lineáris időt vesz igénybe.

Mielőtt vektorokat tartalmazó kódot írnánk, hasznos tudni, hogy mikor érdemes ezeket a konténereket használni.

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, a vektor nem igényli a konténer maximális méretének beállításá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.
  • Az név a vektor vagy az adatelemek neve.
  • Az tételek a vektoradatok elemeinek számát jelöli. Ez a paraméter opcionális.

Ha egy vektor létezik, az iterátorok egy mutatószerű módot biztosítanak az elemei közötti mozgásra.

Iterátorok

Az iterátorok célja, hogy segítsenek hozzáférni a vektorban tárolt elemekhez. Ez egy olyan objektum, amely mutatóként működik. Íme a következő gyakori iterátorok: C++ vektorok:

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

A következő példa feltölt egy vektort, majd végigmegy rajta mind módosítható, mind konstans iterátorokkal.

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:

C++ vektor iterátorok 1. példa kimenet

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

C++ vektor iterátorok 1. példa kód

Code Magyarázat:

  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. Hozz létre egy for ciklust, ami segít a vektoron végighaladni. A változó segít végighaladni a vektor elemein, az 1. elemtől az 5. elemig.
  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 a 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álj egy iterátorváltozót a vektorok elemeinek végigjárására a kezdetektől a vége utáni elemig. Figyeld meg, hogy vector::cbegin() és vector::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.

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.

A következő példa sorban alkalmazza ezeket a módosítókat, hogy lássa, hogyan változik egy vektor.

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:

C++ vektormódosítók 2. példa kimenet

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

C++ vektormódosítók 2. példa kód

Code Magyarázat:

  1. Szerelje be az iostream fejlécfájlt a kódunkba a funkcióinak 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 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

Használja a következőket funkciók Egy vektor kapacitásának meghatározásához:

  • Méret() – Visszaadja a vektor elemeinek számát.
  • Max_size() – Visszaadja a vektor által tárolható elemek maximális számát.
  • Kapacitás() – Visszaadja a vektorhoz rendelt tárhely mennyiségét.
  • Átméretezés() – Átméretezi a konténert, hogy n elemet tartalmazzon. Ha a vektor aktuális mérete nagyobb, mint n, a vektor hátulján lévő elemek eltávolításra kerülnek. Ha a vektor aktuális mérete kisebb, mint n, akkor a vektor hátuljához extra elemek kerülnek hozzáadásra.
  • Üres() – igaz értéket ad vissza, ha egy vektor üres. Egyébként hamis értéket ad vissza.

Ez az utolsó példa egy vektor tárolását jelenti és állítja be a fenti kapacitásfüggvények segítségével.

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:

C++ vektorkapacitás 3. példa kimenet

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

C++ vektorkapacitás 3. példa kód

Code Magyarázat:

  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.

GYIK

A vektor egy dinamikus tömb, amely automatikusan méretezi át magát, és ismeri a saját méretét, míg egy beépített tömbnek fix hossza van, amelyet fordítási időben állítanak be. A vektorok kezelik a memóriát; a nyers tömbök nem.

Használd az alsó index operátort, például a nums[0]-t, a gyors közvetlen eléréshez. Az at() tagfüggvény, a nums.at(0)-hoz hasonlóan, ugyanezt teszi, de egy out_of_range kivételt dob, ha az index érvénytelen, így biztonságosabbá téve a használatát.

Deklaráljunk egy vektort, amelynek elemei maguk is vektorok, például vektor > rács. Méretezheted konstruktorokkal vagy push_back sorokkal. Minden belső vektor függetlenül növekedhet, így egy rugalmas, átméretezhető mátrixot kapsz.

Egy vektor az elemeket összefüggő memóriában tárolja, gyors véletlen hozzáféréssel, míg egy std::list egy duplán láncolt lista, amely gyors beszúrást vagy törlést tesz lehetővé bárhol, de közvetlen indexelés nélkül. Válasszon a hozzáférési mintája alapján.

Illeszd be az algoritmus fejlécét, és hívd meg az std::sort függvényt a kezdő és záró iterátorokkal, ahogy a sort(nums.begin(), nums.end()) utasításban látható. A rendezés alapértelmezés szerint növekvő; adj meg egy egyéni összehasonlítót vagy nagyobb értéket. () csökkenő sorrendbe rendezéshez.

Igen. A vektor egy sablon, és bármilyen típust tartalmazhat, beleértve a karakterláncot, egyéni osztályokat és akár más vektorokat is. A szögletes zárójelben deklaráld az elem típusát, például vektor. vagy vektor .

Igen. A mesterséges intelligencia által használt kódolási asszisztensek egy rövid promptot vagy megjegyzést működő vektorkóddá alakítanak, beleértve a deklarációt, a push_back ciklusokat és az iterációt. Mindig tekintsd át a javasolt típusokat, korlátokat és kapacitáskezelést, mivel a mesterséges intelligencia elvétheti a projektspecifikus követelményeket.

Igen. GitHub másodpilóta vektordeklarációkat, push_back és insert hívásokat, valamint iterátor ciklusokat javasol gépelés közben. Jól kezeli az ismétlődő sablonszövegeket, bár a fordítás előtt továbbra is ellenőrizni kell az indexeket, az átméretezést és a logikát.

Foglald össze ezt a bejegyzést a következőképpen: