logo

Sąrašas C++ standartinėje šablonų bibliotekoje (STL)

Sąrašai yra seka konteineriai kurios leidžia negretimos atminties paskirstymą. Palyginti su vektoriumi, sąrašo judėjimas yra lėtas, tačiau radus vietą, įterpimas ir ištrynimas vyksta greitai (nuolatinis laikas). Paprastai, kai sakome sąrašą, mes kalbame apie a dvigubai susietas sąrašas . Norėdami įgyvendinti atskirai susietą sąrašą, naudojame a forward_list .

std::sąrašas yra sąrašo konteinerio klasė. Tai yra C++ standartinės šablonų bibliotekos (STL) dalis ir yra apibrėžta viduje antraštės failą.



Sintaksė:

std::list name_of_list;>

Pavyzdys:

stygų metodai java

C++








// C++ program to demonstrate the use of list containers> #include> #include> using> namespace> std;> int> main()> {> >// defining list> >list<>int>>gqlist{12,45,8,6};> >for> (>auto> i : gqlist) {> >cout << i <<>' '>;> >}> >return> 0;> }>

>

>

Išvestis

12 45 8 6>

Aukščiau pateiktame pavyzdyje sukūrėme std::list objektą pavadinimu gqlist ir inicijavo jį naudodami inicializatoriaus_ sąrašą. Mes galime inicijuoti std::list objektus įvairiais minėtais būdais čia.

Kai kurios pagrindinės operacijos std::list

  • priekis () Grąžina pirmojo sąrašo elemento reikšmę.
  • atgal () Grąžina paskutinio sąrašo elemento reikšmę.
  • push_front () Sąrašo pradžioje prideda naują elementą „g“.
  • pastumti atgal() Sąrašo pabaigoje prideda naują elementą „g“.
  • pop_front () Pašalina pirmąjį sąrašo elementą ir sumažina sąrašo dydį 1.
  • pop_back() Pašalina paskutinį sąrašo elementą ir sumažina sąrašo dydį 1.
  • Įdėti() Įtraukia naujus elementus į sąrašą prieš elementą nurodytoje vietoje.
  • dydis () Grąžina elementų skaičių sąraše.
  • pradėti () Funkcija begin() grąžina iteratorių, nukreipiantį į pirmąjį sąrašo elementą.
  • galas() end() funkcija grąžina iteratorių, nukreipiantį į teorinį paskutinį elementą, einantį po paskutinio elemento.

Toliau pateiktame pavyzdyje parodytas bendras sąrašo konteinerių naudojimas ir pagrindinės jų funkcijos C++.

Pavyzdys:

C++


žiniatinklio tvarkyklės



// C++ program to demonstrate the implementation of List> #include> #include> #include> using> namespace> std;> // function for printing the elements in a list> void> showlist(list<>int>>g)> {> >list<>int>>::iterator it;> >for> (it = g.begin(); it != g.end(); ++it)> >cout <<>' '> << *it;> >cout <<>' '>;> }> // Driver Code> int> main()> {> >list<>int>>gqlist1, gqlist2;> >for> (>int> i = 0; i <10; ++i) {> >gqlist1.push_back(i * 2);> >gqlist2.push_front(i * 3);> >}> >cout <<>' List 1 (gqlist1) is : '>;> >showlist(gqlist1);> >cout <<>' List 2 (gqlist2) is : '>;> >showlist(gqlist2);> >cout <<>' gqlist1.front() : '> << gqlist1.front();> >cout <<>' gqlist1.back() : '> << gqlist1.back();> >cout <<>' gqlist1.pop_front() : '>;> >gqlist1.pop_front();> >showlist(gqlist1);> >cout <<>' gqlist2.pop_back() : '>;> >gqlist2.pop_back();> >showlist(gqlist2);> >cout <<>' gqlist1.reverse() : '>;> >gqlist1.reverse();> >showlist(gqlist1);> >cout <<>' gqlist2.sort(): '>;> >gqlist2.sort();> >showlist(gqlist2);> >return> 0;> }>

>

>

Išvestis

List 1 (gqlist1) is : 0 2 4 6 8 10 12 14 16 18 List 2 (gqlist2) is : 27 24 21 18 15 12 9 6 3 0 gqlist1.front() : 0 gqlist1.back() : 18 gqlist1.pop_front() : 2 4 6 8 10 12 14 16 18 gqlist2.pop_back() : 27 24 21 18 15 12 9 6 3 gqlist1.reverse() : 18 16 14 12 10 8 6 4 2 gqlist2.sort(): 3 6 9 12 15 18 21 24 27>

Aukščiau pateiktas pavyzdys parodo tik bendrą std::list ir jo narių funkcijų naudojimą. Žemiau esančioje lentelėje pateikiamos visos std::list klasės narių funkcijos ir nuorodos į išsamų jų paaiškinimą.

std::list Narių funkcijos

Funkcijos

Apibrėžimas

priekis () Grąžina pirmojo sąrašo elemento reikšmę.
atgal () Grąžina paskutinio sąrašo elemento reikšmę.
push_front (g) Sąrašo pradžioje prideda naują elementą „g“.
push_back(g) Sąrašo pabaigoje prideda naują elementą „g“.
pop_front () Pašalina pirmąjį sąrašo elementą ir sumažina sąrašo dydį 1.
pop_back() Pašalina paskutinį sąrašo elementą ir sumažina sąrašo dydį 1.
sąrašas::begin() Funkcija begin() grąžina iteratorių, nukreipiantį į pirmąjį sąrašo elementą.
sąrašas::pabaiga() end() funkcija grąžina iteratorių, nukreipiantį į teorinį paskutinį elementą, einantį po paskutinio elemento.
sąrašas rbegin() ir rend() rbegin() grąžina atvirkštinį iteratorių, kuris nurodo paskutinį sąrašo elementą. rend() grąžina atvirkštinį iteratorių, kuris nurodo vietą prieš sąrašo pradžią.
sąrašas cbegin() ir cend() cbegin() grąžina nuolatinį atsitiktinės prieigos iteratorių, kuris nurodo sąrašo pradžią. cend() grąžina nuolatinį atsitiktinės prieigos iteratorių, kuris nurodo sąrašo pabaigą.
sąrašas crbegin() ir crend() crbegin() grąžina nuolatinį atvirkštinį iteratorių, kuris nurodo paskutinį sąrašo elementą, ty atvirkštinę konteinerio pradžią. crend() grąžina pastovų atvirkštinį iteratorių, kuris nurodo teorinį elementą, esantį prieš pirmąjį sąrašo elementą, t. y. atvirkštinę sąrašo pabaigą.
tuščia() Grąžina, ar sąrašas tuščias (1), ar ne (0).
Įdėti() Įtraukia naujus elementus į sąrašą prieš elementą nurodytoje vietoje.
ištrinti () Iš sąrašo pašalinamas vienas elementas arba elementų diapazonas.
priskirti () Sąrašui priskiria naujų elementų, pakeisdami esamus elementus ir keisdami sąrašo dydį.
pašalinti () Iš sąrašo pašalinami visi elementai, kurie yra lygūs tam tikram elementui.
sąrašas::remove_if() Naudojamas norint pašalinti visas reikšmes iš sąrašo, atitinkančias predikatą arba sąlygą, pateiktą kaip funkcijos parametras.
atvirkščiai () Apverčia sąrašą.
dydis () Grąžina elementų skaičių sąraše.
sąrašo dydžio keitimas () Naudojamas sąrašo sudėtinio rodinio dydžiui keisti.
Rūšiuoti () Surūšiuoja sąrašą didėjančia tvarka.
sąrašas max_size() Grąžina maksimalų elementų skaičių, kurį gali turėti sąrašo sudėtinis rodinys.
unikalus sąrašas () Iš sąrašo pašalinami visi pasikartojantys iš eilės elementai.
list::emplace_front() ir list::emplace_back() Funkcija .emplace_front() naudojama naujam elementui įterpti į sąrašo konteinerį ir sukonstruoti objektą vietoje sąrašo pradžioje.
. Funkcija emplace_back() naudojama naujam elementui įterpti į sąrašo konteinerį ir sukonstruoti objektą vietoje sąrašo pabaigoje.
sąrašas::clear() Clear() funkcija naudojama pašalinti visus sąrašo sudėtinio rodinio elementus, todėl jo dydis yra 0.
sąrašas::operatorius= Šis operatorius naudojamas naujam turiniui priskirti konteineriui pakeičiant esamą turinį.
sąrašas::swap() Ši funkcija naudojama vieno sąrašo turiniui pakeisti kitu sąrašu.
list splice () Naudojamas elementams perkelti iš vieno sąrašo į kitą.
sąrašo sujungimas () Sujungia du surūšiuotus sąrašus į vieną.
sąrašas emplace () Išplečiamas sąrašas, įterpiant naują elementą tam tikroje pozicijoje, o objektas sukuriamas vietoje sąrašo pradžioje, o tai gali pagerinti našumą išvengiant kopijavimo operacijos

Ką reikia prisiminti apie sąrašo sudėtinį rodinį

  • Paprastai jis įgyvendinamas naudojant dinaminį dvigubai susietą sąrašą su judėjimu abiem kryptimis.
  • Greitesnė įterpimo ir ištrynimo operacija, palyginti su masyvais ir vektoriais.
  • Tai suteikia tik nuoseklią prieigą. Atsitiktinė prieiga prie bet kurio vidurinio elemento neįmanoma
  • Jis apibrėžiamas kaip šablonas, todėl jame gali būti bet kokio tipo duomenų.
  • Jis veikia kaip nerūšiuotas sąrašas, o tai reiškia, kad pagal numatytuosius nustatymus sąrašo tvarka neišsaugoma. Tačiau yra rūšiavimo būdų.