Std :: sąrašas C ++ su pavyzdžiu

Kas yra standartinis :: sąrašas?

C ++ versijoje „std :: list“ nurodo saugojimo talpyklą. Standarto sąrašas leidžia įterpti ir pašalinti elementus iš bet kur. „Std :: list“ yra įgyvendinamas kaip dvigubai susietas sąrašas. Tai reiškia, kad sąrašo duomenis galima pasiekti dviem kryptimis ir nuosekliai.

Standartinių šablonų bibliotekos sąrašas nepalaiko greitos atsitiktinės prieigos, tačiau palaiko nuoseklią prieigą iš visų krypčių.

Sąrašo elementus galite išsklaidyti skirtingose ​​atminties dalyse. Informacija, reikalinga nuosekliai prieigai prie duomenų, saugoma konteineryje. Jei reikia, vykdymo metu „std ::“ sąrašas gali išsiplėsti ir susitraukti iš abiejų galų. Vidinis skirstytuvas automatiškai įvykdo saugojimo reikalavimus.

Šioje C ++ pamokoje sužinosite:

  • Kas yra standartinis :: sąrašas?
  • Kodėl verta naudoti „std :: list“?
  • Sąrašo sintaksė
  • C ++ sąrašo funkcijos
  • Konstruktoriai
  • Konteinerių savybės
  • Įterpimas į sąrašą
  • Ištrinti iš sąrašo

Kodėl verta naudoti „std :: list“?

Čia yra priežastis naudoti „std :: List“:

  • „Std :: list“ geriau palyginti su kitais sekos konteineriais, tokiais kaip masyvas ir vektorius.
  • Jie geriau veikia įterpdami, perkeldami ir ištraukdami elementus iš bet kurios padėties.
  • „Std :: list“ taip pat geriau veikia su algoritmais, kurie intensyviai atlieka tokias operacijas.

Sąrašo sintaksė

Norėdami apibrėžti „std :: list“, turime importuoti antraštės failą . Čia yra standartinė :: sąrašo apibrėžimo sintaksė:

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

Čia yra aukščiau nurodytų parametrų aprašymas:

  • T - apibrėžia esamo elemento tipą.

    Galite pakeisti T bet kokiu duomenų tipu, net vartotojo nustatytais tipais.

  • Alloc - apibrėžia paskirstymo objekto tipą.

    Pagal numatytuosius nustatymus naudojamas paskirstymo klasės šablonas. Tai priklauso nuo vertės ir naudoja paprastą atminties paskirstymo modelį.

1 pavyzdžiai:

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

Išvestis:

Čia yra kodo ekrano kopija:

Kodo paaiškinimas:

  1. Įtraukite algoritmo antraštės failą, kad galėtumėte naudoti jo funkcijas.
  2. Įtraukite „iostream“ antraštės failą, kad galėtumėte naudoti jo funkcijas.
  3. Įtraukite sąrašo antraštės failą, kad galėtumėte naudoti jo funkcijas.
  4. Iškvieskite pagrindinę () funkciją. Programos logika turėtų būti įtraukta į šios funkcijos tekstą.
  5. Sukurkite sąrašą „my_list“ su 4 sveikųjų skaičių rinkiniu.
  6. Norėdami sukurti ciklo kintamąjį x, naudokite „for loop“. Šis kintamasis bus naudojamas kartojant sąrašo elementus.
  7. Atsispausdinkite konsolės sąrašo vertes.
  8. Kilpos kūno pabaiga.
  9. Pagrindinės () funkcijos kūno pabaiga.

C ++ sąrašo funkcijos

Čia yra įprastos „std :: list“ funkcijos:

Funkcija apibūdinimas
Įdėti() Ši funkcija įterpia naują elementą prieš iteratoriaus nurodytą vietą.
pastumti atgal() Šios funkcijos sąrašo pabaigoje prideda naują elementą.
„push_front“ () Sąrašo priekyje jis prideda naują elementą.
pop_front () Ištrinamas pirmasis sąrašo elementas.
dydis () Ši funkcija nustato sąrašo elementų skaičių.
priekis () Norėdami nustatyti pirmuosius sąrašo elementus.
atgal () Norėdami nustatyti paskutinį sąrašo elementą.
atvirkštinis () Tai pakeičia sąrašo elementus.
sujungti () Sujungiami du rūšiuojami sąrašai.

Konstruktoriai

Štai sąrašas, kurį teikia antraštės failas :

  • Numatytasis konstruktorius std :: list :: list () - sukuria tuščią sąrašą, kuriame nėra nulinių elementų.
  • Fill constructor std :: list :: list () - sukuria sąrašą su n elementais ir kiekvienam elementui priskiria nulinės vertės (0) reikšmę.
  • Diapazono konstruktorius std :: list :: list () - sukuria sąrašą su daugeliu elementų diapazone nuo pirmo iki paskutinio.
  • Kopijuoti konstruktorių std :: list :: list () - sukuriamas sąrašas su kiekvieno esamo sąrašo elemento kopija.
  • Perkelti konstruktorių std :: list :: list () - sukuria sąrašą su kito sąrašo elementais, naudodama judėjimo semantiką.
  • Iniciatyvos sąrašo konstruktorius std :: list :: list () - naudojant perkėlimo semantiką sukuriamas sąrašas su kito sąrašo elementais.

2 pavyzdys:

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

Išvestis:

Čia yra kodo ekrano kopija:

Kodo paaiškinimas:

  1. Įtraukite „iostream“ antraštės failą, kad galėtumėte naudoti jo funkcijas.
  2. Įtraukite sąrašo antraštės failą, kad galėtumėte naudoti jo funkcijas.
  3. Įtraukite standartinę vardų sritį į kodą, kad galėtumėte naudoti jos klases nepaskambinę.
  4. Iškvieskite pagrindinę () funkciją. Programos logika turėtų būti įtraukta į šios funkcijos tekstą.
  5. Sukurkite tuščią sąrašą pavadinimu l.
  6. Sukurkite sąrašą pavadinimu l1 su 3 sveikųjų skaičių rinkiniu.
  7. Sukurkite sąrašą pavadinimu l2 su visais sąrašo l1 elementais nuo pradžios iki pabaigos.
  8. Naudodamiesi perkėlimo semantika, sukurkite sąrašą pavadinimu l3. Sąraše l3 bus tas pats turinys, kaip ir sąraše l2.
  9. Atsispausdinkite sąrašo, pavadinto l, dydį konsolėje kartu su kitu tekstu.
  10. Atsispausdinkite tekstą konsolėje.
  11. Sukurkite iteratorių, pavadintą jį, ir naudokite jį pakartodami sąrašo, pavadinto l2, elementus.
  12. Atsispausdinkite pulto sąrašo l2 elementus.
  13. Atsispausdinkite tekstą konsolėje.
  14. Sukurkite iteratorių, pavadintą jį, ir naudokite iteruoti sąrašo l3 elementus.
  15. Atsispausdinkite pulto sąrašo l3 elementus.
  16. Sėkmingai baigus, programa turi grąžinti vertę.
  17. Pagrindinės () funkcijos kūno pabaiga.

Konteinerių savybės

Čia pateikiamas konteinerių savybių sąrašas:

Nuosavybė apibūdinimas
Seka Sekos konteineriai savo elementus išdėsto griežta linijine seka. Elementai pasiekiami pagal jų padėtį sekoje.
Dvigubai susietas sąrašas Kiekvienas elementas turi informacijos, kaip rasti ankstesnius ir kitus elementus. Tai leidžia pastoviai įterpti ir ištrinti operacijas.
Skirstytojas žino Priskyrimo objektas naudojamas dinamiškai modifikuoti saugyklos dydį.

Įterpimas į sąrašą

Yra įvairių funkcijų, kuriomis galime įterpti reikšmes į sąrašą. Parodykime tai:

3 pavyzdys:

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

Išvestis:

Čia yra kodo ekrano kopija:

Kodo paaiškinimas:

  1. Įtraukite algoritmo antraštės failą, kad galėtumėte naudoti jo funkcijas.
  2. Įtraukite „iostream“ antraštės failą, kad galėtumėte naudoti jo funkcijas.
  3. Įtraukite sąrašo antraštės failą, kad galėtumėte naudoti jo funkcijas.
  4. Iškvieskite pagrindinę () funkciją. Programos logika turėtų būti įtraukta į šios funkcijos tekstą.
  5. Sukurkite sąrašą „my_list“ su 4 sveikųjų skaičių rinkiniu.
  6. Įterpkite elementą 11 į sąrašo, pavadinto my_list, priekį.
  7. Įterpkite 18 elementą į sąrašo pavadinimą my_list.
  8. Sukurkite iteratorių ir naudodami jį suraskite elementą 10 iš sąrašo my_list.
  9. Norėdami nustatyti, ar minėtas elementas buvo rastas, ar ne, naudokite teiginį „if“.
  10. Įdėkite elementą 21 prieš aukščiau esantį elementą, jei jis buvo rastas.
  11. If teiginio turinio pabaiga.
  12. Norėdami sukurti ciklo kintamąjį x, naudokite „for loop“. Šis kintamasis bus naudojamas kartojant sąrašo elementus.
  13. Atsispausdinkite konsolės sąrašo vertes.
  14. Kilpos kūno pabaiga.
  15. Pagrindinės () funkcijos kūno pabaiga.

Ištrinti iš sąrašo

Elementus galima ištrinti iš sąrašo. Ištrynimo () funkcija leidžia iš sąrašo ištrinti elementą ar elementų diapazoną.

  • Norėdami ištrinti vieną elementą, tiesiog perduodate vieną sveiko skaičiaus poziciją. Elementas bus ištrintas.
  • Norėdami ištrinti diapazoną, išlaikysite pradžios ir pabaigos kartotuvus. Parodykime tai.

4 pavyzdys:

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

Išvestis:

Čia yra kodo ekrano kopija:

Kodo paaiškinimas:

  1. Įtraukite algoritmo antraštės failą, kad galėtumėte naudoti jo funkcijas.
  2. Įtraukite „iostream“ antraštės failą, kad galėtumėte naudoti jo funkcijas.
  3. Įtraukite sąrašo antraštės failą, kad galėtumėte naudoti jo funkcijas.
  4. Įtraukite standartinę vardų sritį į mūsų programą, kad galėtumėte naudoti jos klases nepaskambinę.
  5. Iškvieskite pagrindinę () funkciją. Programos logika turėtų būti įtraukta į šios funkcijos tekstą.
  6. Sukurkite sąrašą „my_list“ su 4 sveikųjų skaičių rinkiniu.
  7. Atsispausdinkite tekstą konsolėje.
  8. Norėdami sukurti ciklo kintamąjį x, naudokite „for loop“. Šis kintamasis bus naudojamas kartojant sąrašo elementus.
  9. Atsispausdinkite konsolės sąrašo vertes.
  10. Už kilpos kūno pabaiga.
  11. Sukurkite iteratorių i, kuris nurodo pirmąjį sąrašo elementą.
  12. Naudokite iteratoriaus nurodytą ištrynimo () funkciją, t.
  13. Atsispausdinkite tekstą konsolėje.
  14. Norėdami sukurti ciklo kintamąjį x, naudokite „for loop“. Šis kintamasis bus naudojamas kartojant sąrašo elementus.
  15. Atsispausdinkite konsolės sąrašo vertes. Tai daroma ištrynus.
  16. Už kilpos kūno pabaiga.
  17. Sėkmingai baigusi programa turi grąžinti vertę.
  18. Pagrindinės () funkcijos kūno pabaiga.

Santrauka:

  • „Std :: list“ yra laikymo talpykla.
  • Tai leidžia įterpti ir ištrinti elementus iš bet kurios vietos pastoviu laiku.
  • Jis įgyvendinamas kaip dvigubai susieta grandis
  • Standartinio sąrašo duomenis galima pasiekti dviem kryptimis ir nuosekliai.
  • „std :: list“ nepalaiko greitos atsitiktinės prieigos. Tačiau jis palaiko nuoseklų priėjimą iš visų krypčių.
  • Galite išsklaidyti „std :: list“ sąrašo elementus skirtingose ​​atminties dalyse.
  • Jei reikia vykdymo metu, galite sutrumpinti arba išplėsti „std :: list“ iš abiejų galų.
  • Norėdami įterpti elementus į std :: list, naudojame funkciją insert ().
  • Norėdami ištrinti elementus iš „std ::“ sąrašo, naudojame funkciją „erase“).

Įdomios straipsniai...