Vektori sisään C++ Standard Template Library (STL) esimerkin kanssa

⚡ Älykäs yhteenveto

Vektori sisään C++ on Standard Template Libraryn dynaaminen taulukko, joka muuttaa kokoaan automaattisesti elementtien lisäyksen tai poiston yhteydessä ja tallentaa kohteet yhtenäiseen muistiin, jotta ohjelmoijat voivat käyttää niitä ja käydä ne läpi iteraattoreiden avulla.

  • 📦 Dynaaminen taulukko: A C++ vektori kasvaa tai kutistuu automaattisesti, toisin kuin kiinteän kokoinen staattinen taulukko.
  • 🧩 Otsikko ja syntaksi: Sisällytä vektorin otsikko ja määritä sitten vektori nimi tyypitettyjen elementtien tallentamiseen.
  • 🧭 Iteraattorit: begin(), end(), cbegin() ja cend() liikkuvat vektorielementtien välillä kuten osoittimet.
  • 🛠️ Muokkaimet: push_back(), insert(), pop_back(), erase() ja clear() muuttavat vektorin sisältöä.
  • 📐 Kapasiteetti: size(), capacity(), max_size(), resize() ja empty() raportoivat tai säätävät tallennustilaa.
  • 🤖 AI-apu: GitHub Copilot ja vastaavat tekoälyavustajat luovat lyhyestä kommentista telinevektorioperaatioita.

C++ Vektori STL

Mikä on a C++ Vektori?

A C++ Vector on dynaaminen taulukko, joka pystyy muuttamaan itsensä automaattisesti. Koon muuttaminen tapahtuu sen jälkeen, kun elementti on lisätty tai poistettu vektorista. Säilytys tapahtuu automaattisesti kontin toimesta. Vektorin elementit tallennetaan viereiseen muistiin. Tämä mahdollistaa C++ ohjelmoijat pääsevät käsiksi vektorielementteihin ja kulkemaan niiden läpi iteraattorien avulla.

Uuden datan lisääminen vektoriin tehdään sen lopussa. Tämä vie erotusajan. Elementin poistaminen vektorista vie vakioajan. Syynä on se, että vektorin kokoa ei tarvitse muuttaa. Elementin lisääminen tai poistaminen vektorin alusta vie lineaarisen ajan.

Ennen vektoreiden käyttöä koodissa on hyödyllistä tietää, milloin ne ovat oikea säiliö, johon kannattaa tarttua.

Milloin käyttää vektoria?

A C++ vektoria tulee käyttää seuraavissa olosuhteissa:

  • Kun käsitellään jatkuvasti muuttuvia tietoelementtejä.
  • Jos datan kokoa ei tiedetä ennen aloittamista, vektori ei vaadi säilön enimmäiskoon asettamista.

Vektorien alustaminen C++

Vektorien syntaksi sisään C++ on:

vector <data-type> name (items)

Kuten yllä näkyy, aloitamme vektoriavainsanalla.

  • tietotyyppi on vektoriin tallennettavien elementtien tietotyyppi.
  • nimi on vektorin tai dataelementtien nimi.
  • kohdetta merkitsevät vektoridatan elementtien lukumäärää. Tämä parametri on valinnainen.

Kun vektori on olemassa, iteraattorit tarjoavat osoittimen kaltaisen tavan liikkua sen elementtien välillä.

Iteraattorit

Iteraattorien tarkoitus on auttaa meitä pääsemään käsiksi vektoriin tallennettuihin elementteihin. Se on olio, joka toimii osoittimen tavoin. Tässä ovat yleisimmät iteraattorit, joita tukee C++ vektorit:

  • vektori::alku(): se antaa iteraattorin, joka osoittaa vektorin ensimmäiseen elementtiin.
  • vektori::loppu(): se antaa iteraattorin, joka osoittaa vektorin menneisyyteen.
  • vektori::cbegin(): Se on sama kuin vector::begin(), mutta sillä ei ole mahdollisuutta muokata elementtejä.
  • vektori::cend(): Se on sama kuin vector::end(), mutta ei voi muokata vektorielementtejä.

Seuraavassa esimerkissä vektori täytetään ja sen läpi käydään sekä muokattavilla että vakioiteraattoreilla.

Esimerkki 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;
}

lähtö:

C++ vektori-iteraattorit Esimerkki 1 tuloste

Tässä on kuvakaappaus koodista:

C++ vektori-iteraattorit Esimerkki 1 koodi

Code Selitys:

  1. Sisällytä iostream-otsikkotiedosto koodiimme. Sen avulla voimme lukea konsolista ja kirjoittaa siihen.
  2. Sisällytä vektoriotsikkotiedosto koodiimme. Sen avulla voimme työskennellä vektoreiden kanssa C++.
  3. Sisällytä std-nimiavaruus, jotta voit käyttää sen luokkia ja toimintoja kutsumatta sitä.
  4. Kutsu main()-funktio, jonka sisään ohjelman logiikka pitäisi lisätä.
  5. { merkitsee main()-funktion rungon alkua.
  6. Määritä vektori nimeltä numerot tallentaaksesi joukon kokonaislukuja.
  7. Luo for-silmukka, joka auttaa meitä iteroimaan vektorin läpi. Muuttuja auttaa meitä iteroimaan vektorin alkiot ensimmäisestä viidenteen alkioon.
  8. Työnnä elementit vektoriin num takaapäin. Jokaiselle iteraatiolle tämä lisää muuttujan a nykyisen arvon vektoriin, joka on 1-5.
  9. Tulosta tekstiä konsoliin.
  10. Käytä iteraattorimuuttujaa a iteroidaksesi vektorin numeroiden elementtejä alusta loppuun. Huomaa, että käytämme vektori::begin()- ja vector::end()-iteraattoreita.
  11. Tulosta iteraattorimuuttujan a osoittamat arvot konsoliin jokaiselle iteraatiolle.
  12. Tulosta tekstiä konsoliin. \n on uusi rivimerkki, joka siirtää kohdistimen uudelle riville tulostaaksesi sieltä.
  13. Käytä iteraattorimuuttujaa iteroidaksesi vektorin numerot elementtien läpi alusta loppuun. Huomaa, että käytämme vector::cbegin()- ja vector::cend()-iteraattoreita.
  14. Tulosta iteraattorimuuttujan a osoittamat arvot konsoliin jokaiselle iteraatiolle.
  15. Pääfunktion tulee palauttaa arvo, jos ohjelma toimii onnistuneesti.
  16. Main()-funktion rungon loppu.

muokkaajia

Muokkaajia käytetään määritetyn tietotyypin merkityksen muuttamiseen. Tässä ovat yleiset muuntajat C++:

  • vektori::push_back(): Tämä muuntaja työntää elementtejä takaapäin.
  • vektori::lisää(): Uusien kohteiden lisäämiseen vektoriin tietyssä paikassa.
  • vektori::pop_back(): Tämä muokkaaja poistaa vektorielementit takaa.
  • vektori::erase(): Sitä käytetään elementtien poistamiseen määritetystä paikasta.
  • vektori::clear(): Se poistaa kaikki vektorielementit.

Seuraavassa esimerkissä näitä muokkaajia käytetään peräkkäin vektorin muutoksen havaitsemiseksi.

Esimerkki 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();			
}

lähtö:

C++ vektorimuokkaimet Esimerkki 2 tuloste

Tässä on kuvakaappaus koodista:

C++ vektorimuokkaajien esimerkki 2 -koodi

Code Selitys:

  1. Sisällytä iostream-otsikkotiedosto koodiimme käyttääksesi sen toimintoja.
  2. Sisällytä vektoriotsikkotiedosto koodiimme käyttääksesi sen toimintoja.
  3. Sisällytä std-nimiavaruus, jotta voit käyttää sen luokkia kutsumatta sitä.
  4. Kutsu main()-funktiota. Ohjelmalogiikka tulisi lisätä sen runkoon.
  5. Main()-funktion rungon alku.
  6. Ilmoita numero-niminen vektori joidenkin kokonaislukujen tallentamiseksi.
  7. Tallenna 5 elementtiä vektorinumeroihin. Jokaisen arvo on 1.
  8. Tulosta tekstiä konsoliin.
  9. Käytä iteraattorimuuttujaa a iteroidaksesi vektorin numeroiden elementtejä.
  10. Tulosta vektorinumeroiden arvot konsoliin jokaiselle iteraatiolle.
  11. Lisää arvo 2 vektorin numeroiden loppuun.
  12. Ilmoita kokonaislukumuuttuja n tallentaaksesi vektorin numeroiden koon.
  13. Tulosta vektorinumeroiden viimeinen arvo muun tekstin viereen. Sen pitäisi palauttaa 2.
  14. Poista viimeinen elementti vektorin numeroista. 2 poistetaan.
  15. Tulosta teksti konsoliin. \n siirtää kohdistimen uudelle riville tulostaaksesi tekstin sinne.
  16. Käytä iteraattorimuuttujaa a iteroidaksesi vektorin numeroiden elementtejä.
  17. Tulosta vektorinumeroiden arvot konsoliin jokaiselle iteraatiolle.
  18. Lisää arvo 7 vektorin numeroiden alkuun.
  19. Tulosta vektorinumeroiden ensimmäinen arvo muun tekstin viereen. Sen pitäisi palata 7.
  20. Poista kaikki elementit vektorin numeroista.
  21. Tulosta vektorin numeron koko muun tekstin viereen tyhjennettyään kaiken sisällön. Sen pitäisi palauttaa 0.
  22. Main()-funktion rungon loppu.

Koko

Käytä seuraavaa tehtävät vektorin kapasiteetin määrittämiseksi:

  • Koko() – Se palauttaa vektorin alkioiden lukumäärän.
  • Max_size() – Se palauttaa suurimman määrän alkioita, jotka vektori voi tallentaa.
  • Kapasiteetti() – Se palauttaa vektorille varatun tallennustilan määrän.
  • Muuta kokoa() – Se muuttaa säilön kokoa siten, että se sisältää n kohdetta. Jos vektorin nykyinen koko on suurempi kuin n, vektorin takaosaan lisätään ylimääräisiä kohteita. Jos vektorin nykyinen koko on pienempi kuin n, vektorin takaosaan lisätään ylimääräisiä kohteita.
  • Tyhjä() – palauttaa arvon true, jos vektori on tyhjä. Muussa tapauksessa se palauttaa arvon false.

Tämä viimeinen esimerkki raportoi ja säätää vektorin tallennustilaa käyttämällä yllä olevia kapasiteettifunktioita.

Esimerkki 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;
}

lähtö:

C++ vektorikapasiteetti Esimerkki 3 lähtö

Tässä on kuvakaappaus koodista:

C++ vektorikapasiteetti esimerkki 3 koodi

Code Selitys:

  1. Sisällytä iostream-otsikkotiedosto koodiimme käyttääksesi sen toimintoa.
  2. Sisällytä vektoriotsikkotiedosto koodiimme käyttääksesi sen toimintoja.
  3. Sisällytä std-nimiavaruus koodiimme käyttääksesi sen luokkia kutsumatta sitä.
  4. Kutsu main()-funktiota. Ohjelmalogiikka tulisi lisätä tämän funktion runkoon.
  5. Luo vektori nimeltä vektori1 tallentaaksesi kokonaisluvut.
  6. Käytä for-silmukkaa luodaksesi muuttujan x, jonka arvot ovat 1-10.
  7. Työnnä muuttujan x arvot vektoriin.
  8. Tulosta vektorin koko muun tekstin rinnalle konsoliin.
  9. Tulosta vektorin kapasiteetti konsolin muun tekstin rinnalle.
  10. Tulosta vektoriin mahtuvien kohteiden enimmäismäärä muun konsolin tekstin rinnalle.
  11. Muuta vektorin kokoa niin, että siinä on vain 5 elementtiä.
  12. Tulosta vektorin uusi koko muun tekstin rinnalle.
  13. Tarkista, ettei vektori ole tyhjä.
  14. Tulosta teksti konsoliin, jos vektori ei ole tyhjä.
  15. Käytä else-lausetta kertoaksesi, mitä tehdä, jos vektori on tyhjä.
  16. Konsolille tulostettava teksti, jos vektori on tyhjä.
  17. Ohjelman on palautettava arvo, kun se on suoritettu onnistuneesti.
  18. Main()-funktion rungon loppu.

UKK

Vektori on dynaaminen taulukko, joka muuttaa kokoaan automaattisesti ja tietää oman kokonsa, kun taas sisäänrakennetulla taulukolla on kiinteä pituus, joka asetetaan käännösaikana. Vektorit hallitsevat muistia puolestasi; raakataulukot eivät.

Käytä alaindeksioperaattoria, kuten nums[0], nopeaan suoraan pääsyyn. at()-jäsenfunktio, kuten nums.at(0), tekee saman, mutta heittää out_of_range-poikkeuksen, kun indeksi on virheellinen, mikä tekee siitä turvallisemman.

Määrittele vektori, jonka elementit ovat itse vektoreita, esimerkiksi vektori > ruudukko. Voit muuttaa sen kokoa konstruktoreilla tai push_back-riveillä. Jokainen sisävektori voi kasvaa itsenäisesti, mikä antaa sinulle joustavan, muokattavan matriisin.

Vektori tallentaa elementtejä yhtenäiseen muistiin nopealla satunnaishaulla, kun taas std::list on kaksinkertaisesti linkitetty lista, jossa elementtejä voi lisätä tai poistaa nopeasti mihin tahansa, mutta ei suoraa indeksointia. Valitse haluamasi käyttötavan perusteella.

Sisällytä algoritmin otsikko ja kutsu std::sort-funktiota alku- ja loppuiteraattoreilla, kuten funktiossa sort(nums.begin(), nums.end()). Lajittelu on oletusarvoisesti nouseva; anna mukautettu komparaattori tai suurempi. () lajitellaksesi laskevaan järjestykseen.

Kyllä. Vektori on malline ja voi sisältää mitä tahansa tyyppiä, mukaan lukien merkkijonoja, mukautettuja luokkia ja jopa muita vektoreita. Määrittele elementin tyyppi kulmasulkeiden sisällä, kuten vektori tai vektori .

Kyllä. Tekoälykoodausavustajat muuttavat lyhyen kehotteen tai kommentin toimivaksi vektorikoodiksi, joka sisältää deklaroinnin, push_back-silmukat ja iteroinnin. Tarkista aina ehdotetut tyypit, rajat ja kapasiteetin käsittely, koska tekoäly voi jättää huomiotta projektikohtaiset vaatimukset.

Kyllä. GitHub Copilot ehdottaa vektorimäärittelyjä, push_back- ja insert-kutsuja sekä iteraattorisilmukoita kirjoittaessasi. Se käsittelee toistuvat mallikoodit hyvin, vaikka indeksit, koon muuttaminen ja logiikka tulisi silti tarkistaa ennen kääntämistä.

Tiivistä tämä viesti seuraavasti: