Vektor v štandardnej knižnici šablón C ++ (STL) s príkladom

Obsah:

Anonim

Čo je vektor C ++?

C ++ VECTOR je dynamická pole schopné automaticky upraví sám. Zmena veľkosti nastane po pridaní alebo odstránení prvku z vektora. S úložiskom sa manipuluje automaticky. Prvky vektora sú uložené v súvislom úložisku. To umožňuje programátorom v C ++ prístup a prechádzanie vektorových prvkov pomocou iterátorov.

Vkladanie nových údajov do vektora sa vykonáva na jeho konci. Toto trvá rozdielny čas. Odstránenie prvku z vektora trvá neustále. Dôvod je ten, že nie je potrebné meniť veľkosť vektora. Vloženie alebo vymazanie prvku na začiatku vektora trvá lineárne.

V tomto výučbe pre C ++ sa dozviete:

  • Čo je vektor C ++?
  • Kedy použiť vektor?
  • Ako inicializovať vektory v C ++
  • Iterátory
  • Modifikátory
  • Príklad 1
  • Príklad 2
  • Kapacita
  • Príklad 3

Kedy použiť vektor?

Vektor C ++ by sa mal použiť za nasledujúcich okolností:

  • Pri práci s dátovými prvkami, ktoré sa dôsledne menia.
  • Ak veľkosť údajov nie je známa pred začiatkom, vektor nebude vyžadovať, aby ste nastavili maximálnu veľkosť kontajnera.

Ako inicializovať vektory v C ++

Syntax vektorov v C ++ je:

vector  name (items)
  • Ako je uvedené vyššie, začíname kľúčovým slovom vektor.
  • Dátový typ je dátový typ prvkov, ktoré sa majú uložiť vo vektore.
  • Názov je názov vektora alebo dátových prvkov.
  • Položky označujú počet prvkov pre údaje vektora. Tento parameter je voliteľný.

Iterátory

Účelom iterátorov je pomôcť nám získať prístup k prvkom, ktoré sú uložené vo vektore. Je to objekt, ktorý funguje ako ukazovateľ. Tu sú bežné iterátory podporované vektormi C ++:

  • vector :: begin (): dáva iterátor, ktorý ukazuje na prvý prvok vektora.
  • vector :: end (): dáva iterátor, ktorý ukazuje na posledný prvok vektora.
  • vektor :: cbegin (): je to rovnaké ako s vektorom :: begin (), ale nemá schopnosť upravovať prvky.
  • vector :: cend (): je to rovnaké ako vector :: end (), ale nemôže upravovať vektorové prvky.

Modifikátory

Modifikátory sa používajú na zmenu významu zadaného dátového typu. Tu sú bežné modifikátory v C ++:

  • vector :: push_back (): Tento modifikátor tlačí prvky zozadu.
  • vector :: insert (): Na vkladanie nových položiek do vektora na určenom mieste.
  • vector :: pop_back (): Tento modifikátor odstráni vektorové prvky zo zadnej strany.
  • vector :: erase (): Používa sa na odstránenie rozsahu prvkov zo zadaného umiestnenia.
  • vector :: clear (): Odstráni všetky vektorové prvky.

Príklad 1

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

Výkon:

Tu je snímka obrazovky s kódom:

Vysvetlenie kódu:

  1. Zahrňte do nášho kódu súbor hlavičky iostream. Umožní nám to čítať z konzoly a zapisovať do nej.
  2. Zahrňte do nášho kódu vektorový hlavičkový súbor. Umožní nám to pracovať s vektormi v C ++.
  3. Zahrňte std namespace, aby ste mohli používať jeho triedy a funkcie bez toho, aby ste ich volali.
  4. Zavolajte funkciu main (), do ktorej by mala byť pridaná logika programu.
  5. {Označuje začiatok tela funkcie main ().
  6. Deklarujte vektor s názvom nums na uloženie množiny celých čísel.
  7. Vytvorte slučku for, ktorá nám pomôže iterovať po vektore. Premenná nám pomôže iterovat cez vektorových prvkov, od 1 st až 5 th prvky.
  8. Zozadu zatlačte prvky do vektora num. Pri každej iterácii sa týmto do vektora pridá aktuálna hodnota premennej a, ktorá je 1 až 5.
  9. Vytlačte nejaký text na konzolu
  10. Pomocou iterátorovej premennej a môžete iterovať nad prvkami vektorových čísel od začiatku do konca. Všimnite si, že používame iterátory vector :: begin () a vector :: end ().
  11. Na konzolu pre každú iteráciu vytlačte hodnoty, na ktoré ukazuje premenná iterátora an.
  12. Vytlačte nejaký text na konzolu. \ N je nový riadok, ktorý posúva kurzor na nový riadok a odtiaľ sa bude tlačiť.
  13. Pomocou iterátorovej premennej môžete iterovať nad prvkami vektorových čísel od začiatku do konca. Všimnite si, že používame iterátory vector :: cbegin () a vector :: cend ().
  14. Pre každú iteráciu vytlačte na konzolu hodnoty, na ktoré ukazuje premenná iterátora a.
  15. Hlavná funkcia by mala vrátiť hodnotu, ak je program úspešne spustený.
  16. Koniec tela hlavnej () funkcie.

Príklad 2

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

Výkon:

Tu je snímka obrazovky s kódom:

Vysvetlenie kódu:

  1. Zahrňte súbor hlavičky iostream do nášho kódu, aby ste mohli využívať jeho funkcie.
  2. Zahrňte do nášho kódu vektorový hlavičkový súbor, aby ste mohli využívať jeho funkcie.
  3. Ak chcete používať svoje triedy bez toho, aby ste ich volali, zahrňte štandardný menný priestor.
  4. Zavolajte funkciu main (). Logika programu by mala byť pridaná do jeho tela.
  5. Začiatok tela hlavnej funkcie ().
  6. Deklarujte vektor s názvom nums na uloženie celočíselných hodnôt.
  7. Uložte 5 prvkov do vektorových čísel. Každá s hodnotou 1.
  8. Vytlačte nejaký text na konzolu
  9. Pomocou iteračnej premennej a môžete iterovať nad prvkami vektorových čísel.
  10. Vytlačte hodnoty vektorových čísel na konzolu pre každú iteráciu.
  11. Pridajte hodnotu 2 na koniec vektorových čísel.
  12. Deklarujte celočíselnú premennú n na uloženie veľkosti vektorových čísel.
  13. Vytlačte poslednú hodnotu vektorových čísel spolu s iným textom. Mal by vrátiť 2.
  14. Odstráňte posledný prvok z vektorových čísel. 2 budú odstránené.
  15. Tlačte text na konzolu. \ N presunie kurzor na nový riadok, aby tam vytlačil text.
  16. Pomocou iteračnej premennej a môžete iterovať nad prvkami vektorových čísel.
  17. Vytlačte hodnoty vektorových čísel na konzolu pre každú iteráciu.
  18. Vložte hodnotu 7 na začiatok vektorových čísel.
  19. Vytlačte prvú hodnotu vektorových čísel spolu s iným textom. Malo by sa vrátiť 7.
  20. Vymažte všetky prvky z vektorových čísel.
  21. Po vyčistení všetkého obsahu vytlačte veľkosť vektora spolu s iným textom. Mala by vrátiť 0.
  22. Koniec tela hlavnej () funkcie.

Kapacita

Na určenie kapacity vektora použite nasledujúce funkcie:

  • Veľkosť () - Vráti počet položiek vo vektore.
  • Max_size () - Vráti najvyšší počet položiek, ktoré môže vektor uložiť.
  • Capacity () - Vráti množstvo úložného priestoru prideleného vektoru.
  • Resize () - Zmení veľkosť kontajnera tak, aby obsahoval n položiek. Ak je aktuálna veľkosť vektora väčšia ako n, zadné položky sa z vektora odstránia. Ak je aktuálna veľkosť vektora menšia ako n, na jeho zadnú časť sa pridajú ďalšie položky.
  • Empty () -i t vráti true, ak je vektor prázdny, inak vráti false.

Príklad 3

#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"<

Výkon:

Tu je snímka obrazovky s kódom:

Vysvetlenie kódu:

  1. Zahrňte hlavičkový súbor iostream do nášho kódu, aby ste mohli používať jeho funkciu.
  2. Zahrňte do nášho kódu vektorový hlavičkový súbor, aby ste mohli využívať jeho funkcie.
  3. Ak chcete používať svoje triedy bez toho, aby ste ich volali, zahrňte do nášho kódu std namespace.
  4. Zavolajte funkciu main (). Logika programu by mala byť pridaná do tela tejto funkcie.
  5. Vytvorte vektor s názvom vector1 na ukladanie celých čísel.
  6. Pomocou slučky for vytvorte premennú x s hodnotami od 1 do 10.
  7. Zatlačte hodnoty premennej x do vektora.
  8. Vytlačte veľkosť vektora spolu s ďalším textom na konzole.
  9. Vytlačte kapacitu vektora spolu s ďalším textom na konzole.
  10. Vytlačte maximálny počet položiek, ktoré môže vektor obsahovať, spolu s iným textom na konzole.
  11. Zmeňte veľkosť vektora tak, aby obsahoval iba 5 prvkov.
  12. Vytlačte novú veľkosť vektora spolu s iným textom.
  13. Skontrolujte, či vektor nie je prázdny.
  14. Ak vektor nie je prázdny, vytlačte text na konzolu.
  15. Pomocou príkazu else môžete určiť, čo robiť, ak je vektor prázdny.
  16. Text, ktorý sa má vytlačiť na konzole, ak je vektor prázdny.
  17. Po úspešnom dokončení musí program vrátiť hodnotu.
  18. Koniec hlavného () funkčného tela.

Zhrnutie:

  • Vektor v C ++ je dynamické pole, ktoré je schopné automaticky sa meniť veľkosť, keď je z neho pridaný alebo odstránený prvok.
  • S úložiskom vektora sa manipuluje automaticky.
  • Prvky vektora sú uložené v súvislom úložisku, aby k nim bolo možné získať prístup a potom ich prechádzať pomocou iterátorov.
  • Vkladanie nových údajov do vektora sa vykonáva na jeho konci.
  • Vkladanie údajov do vektora trvá rozdielový čas.
  • Odstránenie prvku z vektora trvá neustále.
  • Vloženie alebo vymazanie prvku na začiatku trvá lineárne.
  • Pri práci s dátovými prvkami, ktoré sa dôsledne menia, by sa mali používať vektory.
  • Môžete tiež použiť vektory, ak veľkosť údajov nie je známa pred začiatkom.