Std :: nimekiri C ++ näites

Lang L: none (table-of-contents):

Anonim

Mis on standard :: loend?

Standardis C ++ viitab std :: loend salvestusmahutile. Std: list võimaldab teil üksusi ükskõik kuhu lisada ja eemaldada. Std :: list on rakendatud topeltlingitud loendina. See tähendab, et loendiandmetele pääseb juurde kahesuunaliselt ja järjestikku.

Standardmallide kogu loend ei toeta kiiret juhuslikku juurdepääsu, kuid toetab järjestikust juurdepääsu kõikidest suundadest.

Loendielemente saate hajutada erinevates mälupulkades. Andmetele järjestikuse juurdepääsu jaoks vajalik teave on salvestatud konteinerisse. Std :: loend võib käituse ajal mõlemast otsast laieneda ja kahaneda. Sisemine eraldaja täidab automaatselt salvestusnõuded.

Selles C ++ õpetuses saate teada:

  • Mis on standard :: loend?
  • Miks kasutada std :: list?
  • Loetlege süntaks
  • C ++ Loendifunktsioonid
  • Konstruktorid
  • Konteineri omadused
  • Lisamine loendisse
  • Loendist kustutamine

Miks kasutada std :: list?

Siin on std :: List kasutamise põhjus:

  • Std :: loendis on parem võrrelda teiste järjestuse konteineritega nagu massiivi ja vektoriga.
  • Neil on parem jõud elementide sisestamisel, teisaldamisel ja igast asendist väljavõtmisel.
  • Std :: loendis läheb paremini ka selliste toimingute intensiivselt sooritavate algoritmide korral.

Loetlege süntaks

Std :: listi määratlemiseks peame importima päisefaili . Siin on standard :: loendi definitsiooni süntaks:

template < class Type, class Alloc =allocator > class list;

Siin on ülaltoodud parameetrite kirjeldus:

  • T - määratleb sisalduva elemendi tüübi.

    Võite asendada T mis tahes andmetüübiga, isegi kasutaja määratud tüüpidega.

  • Alloc - määratleb eraldaja objekti tüübi.

    See kasutab vaikimisi eraldaja klassi malli. See sõltub väärtusest ja kasutab lihtsat mälu jaotamise mudelit.

Näited 1:

#include #include #include 
int main() {std::list my_list = { 12, 5, 10, 9 };for (int x : my_list) {std::cout << x << '\n';}}

Väljund:

Siin on ekraanipilt koodist:

Koodi selgitus:

  1. Funktsioonide kasutamiseks lisage algoritmi päisefail.
  2. Funktsioonide kasutamiseks lisage iostreami päisefail.
  3. Lisage loendi päisefail selle funktsioonide kasutamiseks.
  4. Helistage funktsioonile main (). Selle funktsiooni kehasse tuleks lisada programmiloogika.
  5. Looge loend nimega my_list koos 4 täisarvuga.
  6. Looge silmuse muutuja x loomiseks a for loop. Seda muutujat kasutatakse loendi elementide kordamiseks.
  7. Printige konsoolil oleva loendi väärtused välja.
  8. Silmuse jaoks keha ots.
  9. Põhifunktsiooni () keha lõpp.

C ++ Loendifunktsioonid

Siin on tavalised standardi :: loendi funktsioonid:

Funktsioon Kirjeldus
sisesta () See funktsioon lisab uue üksuse enne iteraatori osutavat positsiooni.
lükka tagasi() See funktsioon lisab loendi lõppu uue üksuse.
push_front () See lisab loendi esiküljele uue üksuse.
pop_front () See kustutab loendi esimese üksuse.
suurus () See funktsioon määrab loendi elementide arvu.
ees () Loendi esimeste üksuste määramiseks.
tagasi() Loendi viimase üksuse määramiseks.
tagurpidi() See muudab loendi üksused vastupidiseks.
ühendama () See ühendab kaks sorteeritud loendit.

Konstruktorid

Siin on loend päisefaili pakutavatest funktsioonidest:

  • Vaikekonstruktor std :: list :: list () - see loob tühja loendi, millel on null elementi.
  • Täida konstruktor std :: list :: list () - See loob n elemendiga loendi ja määrab igale elemendile väärtuse null (0).
  • Vahemiku konstruktor std: list :: list () - loob loendi, kus on palju elemente vahemikus esimesest viimaseni.
  • Kopeeri konstruktor std :: list :: list () - see loob loendi koos olemasoleva loendi kõigi elementide koopiatega.
  • Teisalda konstruktor std :: list :: list () - loob teisaldamise semantika abil loendi teise loendi elementidega.
  • Algatajate loendi konstruktor std: list :: list () - see loob teisaldatava semantika abil loendi teise loendi elementidega.

Näide 2:

#include #include 
using namespace std;int main(void) {list l;list l1 = { 10, 20, 30 };list l2(l1.begin(), l1.end());list l3(move(l1));cout << "Size of list l: " << l.size() << endl;cout << "List l2 contents: " << endl;for (auto it = l2.begin(); it != l2.end(); ++it)cout << *it << endl;cout << "List l3 contents: " << endl;for (auto it = l3.begin(); it != l3.end(); ++it)cout << *it << endl;return 0;}

Väljund:

Siin on ekraanipilt koodist:

Koodi selgitus:

  1. Funktsioonide kasutamiseks lisage iostreami päisefail.
  2. Lisage loendi päisefail selle funktsioonide kasutamiseks.
  3. Kaasake standardsesse nimeruumi kood, et kasutada selle klasse ilma seda kutsumata.
  4. Helistage funktsioonile main (). Selle funktsiooni kehasse tuleks lisada programmiloogika.
  5. Looge tühi loend nimega l.
  6. Looge loend nimega l1, milles on 3 täisarvu.
  7. Looge loend nimega l2 koos kõigi elementidega loendis nimega l1, algusest lõpuni.
  8. Looge teisaldussemantika abil loend nimega l3. Loendis l3 on sama sisu kui loendis l2.
  9. Trükkige konsoolile loendi suurus nimega l muu teksti kõrvale.
  10. Printige konsoolile tekst.
  11. Looge iteraator nimega ja kasutage seda loendi l2 nimede elementide kordamiseks.
  12. Printige konsoolile loendi l2 elemendid.
  13. Printige konsoolile tekst.
  14. Looge iteraator nimega ja kasutage seda loendi l3 elementide kordamiseks.
  15. Printige konsoolile loendi l3 elemendid.
  16. Eduka lõpetamise korral peab programm tagastama väärtuse.
  17. Põhifunktsiooni () keha lõpp.

Konteineri omadused

Siin on konteinerite omaduste loend:

Kinnisvara Kirjeldus
Järjestus Järjestuskonteinerid järjestavad oma elemendid ranges lineaarses järjestuses. Elementidele pääseb ligi nende asetuse järgi järjestuses.
Kahekordse lingiga loend Igal elemendil on teave selle kohta, kuidas leida eelmisi ja järgmisi elemente. See võimaldab sisestamise ja kustutamise toiminguteks pidevalt aega.
Jaotaja teadlik Eraldaja objekti kasutatakse mälu suuruse dünaamiliseks muutmiseks.

Lisamine loendisse

On erinevaid funktsioone, mida saame kasutada väärtuste lisamiseks loendisse. Demonstreerime seda:

Näide 3:

#include #include #include 
int main() {std::list my_list = { 12, 5, 10, 9 };my_list.push_front(11);my_list.push_back(18);auto it = std::find(my_list.begin(), my_list.end(), 10);if (it != my_list.end()) {my_list.insert(it, 21);}for (int x : my_list) {std::cout << x << '\n';}}

Väljund:

Siin on ekraanipilt koodist:

Koodi selgitus:

  1. Funktsioonide kasutamiseks lisage algoritmi päisefail.
  2. Funktsioonide kasutamiseks lisage iostreami päisefail.
  3. Lisage loendi päisefail selle funktsioonide kasutamiseks.
  4. Helistage funktsioonile main (). Selle funktsiooni kehasse tuleks lisada programmiloogika.
  5. Looge loend nimega my_list koos 4 täisarvuga.
  6. Sisestage element 11 loendi my_list nimega esiosa.
  7. Sisestage element 18 loendi my_list nimega lõppu.
  8. Looge see iteraator ja kasutage seda elemendi 10 leidmiseks loendist my_list.
  9. Kasutage lauset if, et teha kindlaks, kas ülaltoodud element leiti või mitte.
  10. Kui see leiti, sisestage element 21 ülaltoodud elemendi ette.
  11. If-lause sisu lõpp.
  12. Looge silmuse muutuja x loomiseks a for loop. Seda muutujat kasutatakse loendi elementide kordamiseks.
  13. Printige konsoolil oleva loendi väärtused välja.
  14. Silmuse jaoks keha ots.
  15. Põhifunktsiooni () keha lõpp.

Loendist kustutamine

Loendist on võimalik üksusi kustutada. Funktsioon erase () võimaldab teil üksuse või üksuste vahemiku loendist kustutada.

  • Üksiku elemendi kustutamiseks peate lihtsalt edastama ühe täisarvu positsiooni. Üksus kustutatakse.
  • Vahemiku kustutamiseks läbite algus- ja lõpp iteraatorid. Demonstreerime seda.

Näide 4:

#include #include #include 
using namespace std;int main() {std::list my_list = { 12, 5, 10, 9 };cout << "List elements before deletion: ";for (int x : my_list) {std::cout << x << '\n';}list::iterator i = my_list.begin();my_list.erase(i);cout << "\nList elements after deletion: ";for (int x : my_list) {std::cout << x << '\n';}return 0;}

Väljund:

Siin on koodi ekraanipilt:

Koodi selgitus:

  1. Funktsioonide kasutamiseks lisage algoritmi päisefail.
  2. Funktsioonide kasutamiseks lisage iostreami päisefail.
  3. Lisage loendi päisefail selle funktsioonide kasutamiseks.
  4. Kaasake meie programmi standardne nimeruum, et kasutada selle klasse ilma seda kutsumata.
  5. Helistage funktsioonile main (). Selle funktsiooni kehasse tuleks lisada programmiloogika.
  6. Looge loend nimega my_list koos 4 täisarvuga.
  7. Printige konsoolile tekst.
  8. Looge silmuse muutuja x loomiseks a for loop. Seda muutujat kasutatakse loendi elementide kordamiseks.
  9. Printige konsoolil oleva loendi väärtused välja.
  10. For silmusekeha ots.
  11. Looge iteraator i, mis osutab loendi esimesele elemendile.
  12. Kasutage iteraatori osutatud funktsiooni erase ().
  13. Printige konsoolile tekst.
  14. Looge silmuse muutuja x loomiseks a for loop. Seda muutujat kasutatakse loendi elementide kordamiseks.
  15. Printige konsoolil oleva loendi väärtused välja. See tuleb pärast kustutamist.
  16. For silmusekeha ots.
  17. Programm peab edukal lõpetamisel tagastama väärtuse.
  18. Põhifunktsiooni () keha lõpp.

Kokkuvõte:

  • Std :: list on salvestusmahuti.
  • See võimaldab üksusi sisestada ja kustutada kõikjalt, pidevalt.
  • Seda rakendatakse kahekordse lingina
  • Std :: listi andmetele pääseb juurde kahesuunaliselt ja järjestikku.
  • std :: list ei toeta kiiret juhuslikku juurdepääsu. Kuid see toetab järjestikust juurdepääsu igast suunast.
  • Std :: listi loendielemente saate hajutada erinevates mälupulkades.
  • Vajadusel saate käitamise ajal std :: listi kahest otsast kahandada või laiendada.
  • Üksuste lisamiseks std :: listi kasutame funktsiooni insert ().
  • Üksuste kustutamiseks std :: loendist kasutame funktsiooni erase ().