Vektor sisse C++ Standardmalliteek (STL) koos näitega

⚡ Nutikas kokkuvõte

Vektor sisse C++ on standardmallide teegi dünaamiline massiiv, mis muudab oma suurust automaatselt elementide lisamisel või eemaldamisel, salvestades üksusi külgnevas mälus, et programmeerijad saaksid neile iteraatorite abil juurde pääseda ja neid läbida.

  • 📦 Dünaamiline massiiv: A C++ Vektor kasvab või kahaneb automaatselt, erinevalt fikseeritud suurusega staatilisest massiivist.
  • 🧩 Päis ja süntaks: Lisage vektori päis ja seejärel deklareerige vektor nimi tüüpitud elementide salvestamiseks.
  • 🧭 Iteraatorid: begin(), end(), cbegin() ja cend() liiguvad vektorelementide vahel nagu pointerid.
  • 🛠️ Modifikaatorid: push_back(), insert(), pop_back(), erase() ja clear() muudavad vektori sisu.
  • 📐 Mahutavus: size(), capacity(), max_size(), resize() ja empty() annavad aru või kohandavad salvestusruumi.
  • 🤖 AI abi: GitHub Copilot ja sarnased tehisintellekti assistendid loovad lühikese kommentaari põhjal tellingute vektorioperatsioone.

C++ Vektori STL

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 lisamine vektorisse toimub selle lõpus. See võtab diferentsiaalaja. Elemendi eemaldamine vektorist võtab konstantse aja. Põhjus on selles, et vektori suurust pole vaja muuta. Elemendi lisamine või kustutamine vektori algusesse võtab lineaarse aja.

Enne vektoritega koodi kirjutamist on kasulik teada, millal on need õiged konteinerid, mille poole haarata.

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.
  • . kirjed tähistavad vektorandmete elementide arvu. See parameeter on valikuline.

Kui vektor on olemas, pakuvad iteraatorid pointerilaadset viisi selle elementide vahel liikumiseks.

Iteraatorid

Iteraatorite eesmärk on aidata meil pääseda ligi vektoris talletatud elementidele. See on objekt, mis toimib nagu pointer. Siin on levinumad iteraatorid, mida toetab C++ vektorid:

  • vektor::begin(): see annab iteraatori, mis osutab vektori esimesele elemendile.
  • vektor::lõpp(): see annab iteraatori, mis osutab vektori mineviku-lõpu elemendile.
  • vektor::cbegin(): See on sama mis vector::begin(), aga sellel pole elementide muutmise võimalust.
  • vektor::cend(): See on sama mis vector::end(), aga ei saa muuta vektori elemente.

Järgmises näites asustatakse vektor ja seejärel käib see läbi nii muudetavate kui ka konstantsete iteraatoritega.

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:

C++ vektori iteraatorid Näite 1 väljund

Siin on koodi ekraanipilt:

C++ vektori iteraatorite näide 1 kood

Code Selgitus:

  1. Lisage meie koodi iostreami päisefail. See võimaldab meil konsoolist lugeda ja sinna kirjutada.
  2. Kaasake vektori päise fail meie koodi. See võimaldab meil töötada vektoritega C++.
  3. Kaasake std-nimeruum, et kasutada selle klasse ja funktsioone ilma seda kutsumata.
  4. Kutsuge välja main() funktsioon, mille sisse tuleks lisada programmi loogika.
  5. { märgib funktsiooni main() keha algust.
  6. Täisarvude hulga salvestamiseks deklareerige vektor nimega nums.
  7. Loo for-tsükkel, mis aitab meil vektorit läbi käia. Muutuja aitab meil vektori elemente läbi käia, 1.-5. elemendini.
  8. Lükake elemendid tagantpoolt vektori num sisse. Iga iteratsiooni jaoks lisab see vektorisse muutuja a praeguse väärtuse, mis on 1 kuni 5.
  9. Printige konsoolile teksti.
  10. 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.
  11. Printige iga iteratsiooni jaoks konsoolil väärtused, millele viitab iteraatori muutuja a.
  12. Printige konsoolile teksti. \n on uus rea märk, mis viib kursori uuele reale, et sealt printida.
  13. Kasutage iteraatorimuutujat, et itereerida vektori num elementide üle algusest lõpuni. Pange tähele, et me kasutame vector::cbegin() ja vector::cend() iteraatoreid.
  14. Printige iga iteratsiooni jaoks konsoolil väärtused, millele viitab iteraatori muutuja a.
  15. Kui programm töötab edukalt, peaks põhifunktsioon tagastama väärtuse.
  16. Funktsiooni main() keha lõpp.

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.

Järgmises näites rakendatakse neid modifikaatoreid järjestikku, et näha, kuidas vektor muutub.

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:

C++ vektori modifikaatorite näide 2 väljund

Siin on koodi ekraanipilt:

C++ vektori modifikaatorite näide 2 kood

Code Selgitus:

  1. Selle funktsioonide kasutamiseks lisage meie koodi iostreami päisefail.
  2. Selle funktsioonide kasutamiseks lisage meie koodi vektori päisefail.
  3. Kaasake std-nimeruum, et kasutada selle klasse ilma seda kutsumata.
  4. Kutsuge funktsioon main(). Programmi loogika tuleks lisada selle kehasse.
  5. Funktsiooni main() keha algus.
  6. Mõne täisarvu väärtuse salvestamiseks deklareerige vektor nimega nums.
  7. Talletage 5 elementi vektornumbrites. Igaühe väärtusega 1.
  8. Printige konsoolile teksti.
  9. Kasutage vektornumbrite elementide itereerimiseks iteraatori muutujat a.
  10. Printige iga iteratsiooni jaoks konsooli vektornumbrite väärtused.
  11. Lisage väärtus 2 vektornumbrite lõppu.
  12. Deklareerige täisarvuline muutuja n, et salvestada vektori numbrite suurust.
  13. Printige vektori numbrite viimane väärtus muu teksti kõrvale. See peaks tagastama 2.
  14. Eemaldage vektorite numbritest viimane element. 2 eemaldatakse.
  15. Printige tekst konsoolile. \n viib kursori uuele reale, et trükkida sinna tekst.
  16. Kasutage vektornumbrite elementide itereerimiseks iteraatori muutujat a.
  17. Printige iga iteratsiooni jaoks konsooli vektornumbrite väärtused.
  18. Sisestage väärtus 7 vektori numbrite algusesse.
  19. Printige vektori numbrite esimene väärtus muu teksti kõrvale. See peaks tagasi tulema 7.
  20. Kustutage vektori numbritest kõik elemendid.
  21. Pärast kogu sisu kustutamist printige vektori numbri suurus koos muu tekstiga. See peaks tagastama 0.
  22. Funktsiooni main() keha lõpp.

Võimsus

Kasutage järgmist funktsioonid Vektori mahutavuse määramiseks:

  • Suurus() – See tagastab vektori elementide arvu.
  • Max_size() – See tagastab suurima arvu elemente, mida vektor saab salvestada.
  • Mahutavus() – See tagastab vektorile eraldatud salvestusruumi hulga.
  • Suuruse muutmine() – See muudab konteineri suurust nii, et see sisaldaks n elementi. Kui vektori praegune suurus on suurem kui n, eemaldatakse vektori tagumised elemendid. Kui vektori praegune suurus on väiksem kui n, lisatakse vektori lõppu lisaelemendid.
  • Tühi() – tagastab väärtuse „true”, kui vektor on tühi. Vastasel juhul tagastab väärtuse „false”.

See viimane näide annab aru ja kohandab vektori salvestusruumi ülaltoodud mahtuvusfunktsioonide abil.

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:

C++ Vektori mahtuvus Näide 3 väljund

Siin on koodi ekraanipilt:

C++ Vektori mahutavuse näide 3 kood

Code Selgitus:

  1. Selle funktsiooni kasutamiseks lisage meie koodi iostreami päisefail.
  2. Selle funktsioonide kasutamiseks lisage meie koodi vektori päisefail.
  3. Lisage meie koodi std nimeruum, et kasutada selle klasse ilma seda kutsumata.
  4. Kutsuge funktsioon main(). Programmi loogika tuleks lisada selle funktsiooni kehasse.
  5. Looge täisarvude salvestamiseks vektor nimega vektor1.
  6. Kasutage tsüklit for, et luua muutuja x väärtustega 1 kuni 10.
  7. Lükake muutuja x väärtused vektorisse.
  8. Printige vektori suurus koos muu konsooli tekstiga.
  9. Printige vektori mahutavus koos muu konsooli tekstiga.
  10. Printige koos muu konsooli tekstiga maksimaalne arv elemente, mida vektor mahutab.
  11. Muutke vektori suurust nii, et see mahutaks ainult 5 elementi.
  12. Printige vektori uus suurus koos muu tekstiga.
  13. Kontrollige, kas vektor pole tühi.
  14. Kui vektor pole tühi, printige tekst konsoolile.
  15. Kasutage käsku else, et öelda, mida teha, kui vektor on tühi.
  16. Tekst, mis prinditakse konsoolil, kui vektor on tühi.
  17. Programm peab pärast edukat lõpetamist tagastama väärtuse.
  18. Funktsiooni main() keha lõpp.

KKK

Vektor on dünaamiline massiiv, mis muudab automaatselt oma suurust ja teab oma suurust, samas kui sisseehitatud massiivil on kompileerimise ajal määratud fikseeritud pikkus. Vektorid haldavad mälu teie eest; toormassiivid seda ei tee.

Kiireks otsejuurdepääsuks kasutage alaindeksi operaatorit, näiteks nums[0]. at() liikmefunktsioon, nagu ka nums.at(0), teeb sama, kuid viskab sobimatu indeksi korral out_of_range erandi, mis muudab selle turvalisemaks.

Deklareerige vektor, mille elemendid on ise vektorid, näiteks vektor > ruudustik. Selle suurust saab muuta konstruktorite või push_back ridade abil. Iga sisemine vektor saab iseseisvalt kasvada, andes teile paindliku ja muudetava suurusega maatriksi.

Vektor salvestab elemente külgnevas mälus kiire juhusliku juurdepääsuga, samas kui std::list on kahekordselt lingitud loend, millel on kiire lisamine või kustutamine kõikjale, kuid ilma otsese indekseerimiseta. Valige oma juurdepääsumustri põhjal.

Lisage algoritmi päis ja kutsuge std::sort välja algus- ja lõpp-iteraatoritega, nagu sort(nums.begin(), nums.end()). Vaikimisi on sorteerimine kasvav; edastage kohandatud võrdlusnäitaja või suurem. () kahanevas järjekorras sortimiseks.

Jah. Vektor on mall ja võib sisaldada mis tahes tüüpi elemente, sealhulgas stringi, kohandatud klasse ja isegi teisi vektoreid. Deklareerige elemendi tüüp nurksulgudes, näiteks vektor. või vektor .

Jah. Tehisintellektil põhinevad kodeerimisassistendid muudavad lühikese käsuviiba või kommentaari toimivaks vektorkoodiks, mis sisaldab deklaratsiooni, tagasilükkamissilmuseid ja iteratsiooni. Vaadake alati üle soovitatud tüübid, piirid ja mahutavuse käsitlemine, kuna tehisintellekt võib projektispetsiifilisi nõudeid mööda vaadata.

Jah. GitHubi koopia soovitab tippimise ajal vektori deklaratsioone, push_back ja insert väljakutseid ning iteraatori tsükleid. See saab korduvate mallidega hästi hakkama, kuigi enne kompileerimist tuleks siiski kontrollida indekseid, suuruse muutmist ja loogikat.

Võta see postitus kokku järgmiselt: