Std :: saraksts C ++ ar piemēru

Satura rādītājs:

Anonim

Kas ir std :: saraksts?

Programmā C ++ std :: saraksts attiecas uz uzglabāšanas konteineru. Standarts: ļauj ievietot un noņemt vienumus no jebkuras vietas. Std :: saraksts tiek ieviests kā divreiz saistīts saraksts. Tas nozīmē, ka saraksta datiem var piekļūt divvirzienu un secīgi.

Standarta veidņu bibliotēkas saraksts neatbalsta ātru nejaušu piekļuvi, taču atbalsta secīgu piekļuvi no visiem virzieniem.

Saraksta elementus varat izkaisīt dažādās atmiņas daļās. Informācija, kas nepieciešama secīgai piekļuvei datiem, tiek glabāta konteinerā. Std :: saraksts var paplašināties un samazināties no abiem galiem pēc nepieciešamības izpildlaika laikā. Iekšējais sadalītājs automātiski izpilda krātuves prasības.

Šajā C ++ apmācībā jūs uzzināsiet:

  • Kas ir std :: saraksts?
  • Kāpēc izmantot std :: list?
  • Saraksta sintakse
  • C ++ saraksta funkcijas
  • Konstruktori
  • Konteinera īpašības
  • Ievietošana sarakstā
  • Dzēšana no saraksta

Kāpēc izmantot std :: list?

Šeit ir iemesls, kāpēc izmantojat std :: List:

  • Std :: saraksts ir labāk salīdzināms ar citiem secības konteineriem, piemēram, masīvu un vektoru.
  • Viņiem ir labāka veiktspēja, ievietojot, pārvietojot un izvelkot elementus no jebkuras pozīcijas.
  • Std :: list labāk darbojas arī ar algoritmiem, kas intensīvi veic šādas darbības.

Saraksta sintakse

Lai definētu std :: list, mums jāimportē galvenes fails . Šeit ir std :: saraksta definīcijas sintakse:

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

Šeit ir iepriekš minēto parametru apraksts:

  • T - nosaka ietvertā elementa tipu.

    T var aizstāt ar jebkuru datu tipu, pat ar lietotāja definētiem tipiem.

  • Alloc - definē sadalītāja objekta tipu.

    Pēc noklusējuma tiek izmantota sadalītāja klases veidne. Tas ir atkarīgs no vērtības un izmanto vienkāršu atmiņas piešķiršanas modeli.

1. piemēri:

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

Izeja:

Šeit ir koda ekrānuzņēmums:

Koda skaidrojums:

  1. Iekļaujiet algoritma galvenes failu, lai izmantotu tā funkcijas.
  2. Iekļaujiet iostream galvenes failu, lai izmantotu tā funkcijas.
  3. Iekļaujiet saraksta galvenes failu, lai izmantotu tā funkcijas.
  4. Izsauciet galveno () funkciju. Šīs funkcijas pamattekstā jāpievieno programmas loģika.
  5. Izveidojiet sarakstu ar nosaukumu my_list ar 4 veselu skaitļu kopu.
  6. Izmantojiet a for loop, lai izveidotu cilpas mainīgo x. Šis mainīgais tiks izmantots, lai atkārtotu saraksta elementus.
  7. Konsolē izdrukājiet saraksta vērtības.
  8. Par cilpu ķermeņa beigas.
  9. Galvenās () funkcijas ķermeņa beigas.

C ++ saraksta funkcijas

Šeit ir parastās standarta :: saraksta funkcijas:

Funkcija Apraksts
ievietot () Šī funkcija ievieto jaunu vienumu pirms iteratora norādītās vietas.
atgrūst() Šīs funkcijas saraksta beigās pievieno jaunu vienumu.
push_front () Saraksta priekšpusē tiek pievienots jauns vienums.
pop_front () Tas izdzēš saraksta pirmo vienumu.
Izmērs() Šī funkcija nosaka saraksta elementu skaitu.
priekšā () Lai noteiktu saraksta pirmos vienumus.
atpakaļ () Lai noteiktu saraksta pēdējo vienumu.
reverss () Tas mainīs saraksta vienumus.
apvienot () Tas apvieno divus sakārtotus sarakstus.

Konstruktori

Šeit ir funkciju saraksts, ko nodrošina galvenes fails :

  • Noklusējuma konstruktors std :: list :: list () - tas izveido tukšu sarakstu ar nulles elementiem.
  • Fill constructor std :: list :: list () - tas izveido sarakstu ar n elementiem un katram elementam piešķir vērtību nulle (0).
  • Diapazona konstruktors std :: list :: list () - izveido sarakstu ar daudziem elementiem diapazonā no pirmā līdz pēdējam.
  • Kopēt konstruktoru std :: list :: list () - tas izveido sarakstu ar katra esošā saraksta elementa kopiju.
  • Pārvietot konstruktoru std :: list :: list () - izmantojot pārvietošanas semantiku, izveido sarakstu ar cita saraksta elementiem.
  • Inicializētāja saraksta konstruktors std :: list :: list () - izmantojot pārvietošanas semantiku, tas izveido sarakstu ar cita saraksta elementiem.

2. piemērs:

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

Izeja:

Šeit ir koda ekrānuzņēmums:

Koda skaidrojums:

  1. Iekļaujiet iostream galvenes failu, lai izmantotu tā funkcijas.
  2. Iekļaujiet saraksta galvenes failu, lai izmantotu tā funkcijas.
  3. Iekļaujiet kodā standarta nosaukumvietu, lai izmantotu tās klases, to neizsaucot.
  4. Izsauciet galveno () funkciju. Šīs funkcijas pamattekstā jāpievieno programmas loģika.
  5. Izveidojiet tukšu sarakstu ar nosaukumu l.
  6. Izveidojiet sarakstu ar nosaukumu l1 ar 3 veselu skaitļu kopu.
  7. Izveidojiet sarakstu ar nosaukumu l2 ar visiem elementiem sarakstā ar nosaukumu l1, no sākuma līdz beigām.
  8. Izmantojot pārvietošanas semantiku, izveidojiet sarakstu ar nosaukumu l3. Sarakstam l3 būs tāds pats saturs kā sarakstam l2.
  9. Konsolē līdzās citam tekstam izdrukājiet saraksta l lielumu.
  10. Izdrukājiet tekstu konsolē.
  11. Izveidojiet iteratoru ar nosaukumu un izmantojiet to, lai atkārtotu saraksta elementus ar nosaukumu l2.
  12. Konsolē izdrukājiet saraksta l2 elementus.
  13. Izdrukājiet tekstu konsolē.
  14. Izveidojiet iteratoru ar nosaukumu un izmantojiet to, lai atkārtotu saraksta l3 elementus.
  15. Konsolē izdrukājiet saraksta l3 elementus.
  16. Pēc sekmīgas pabeigšanas programmai ir jāatgriež vērtība.
  17. Galvenās () funkcijas ķermeņa beigas.

Konteinera īpašības

Šeit ir konteineru rekvizītu saraksts:

Īpašums Apraksts
Secība Secības konteineri savus elementus sakārto stingrā lineārā secībā. Elementiem piekļūst pēc to pozīcijas secībā.
Divkārši saistīts saraksts Katrā elementā ir informācija par to, kā atrast iepriekšējos un nākamos elementus. Tas ļauj pastāvīgi ievietot un dzēst operācijas.
Apzinātājs apzinās Lai dinamiski mainītu krātuves lielumu, tiek izmantots sadalītāja objekts.

Ievietošana sarakstā

Ir dažādas funkcijas, kuras mēs varam izmantot, lai vērtības ievietotu sarakstā. Parādīsim to:

3. piemērs:

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

Izeja:

Šeit ir koda ekrānuzņēmums:

Koda skaidrojums:

  1. Iekļaujiet algoritma galvenes failu, lai izmantotu tā funkcijas.
  2. Iekļaujiet iostream galvenes failu, lai izmantotu tā funkcijas.
  3. Iekļaujiet saraksta galvenes failu, lai izmantotu tā funkcijas.
  4. Izsauciet galveno () funkciju. Šīs funkcijas pamattekstā jāpievieno programmas loģika.
  5. Izveidojiet sarakstu ar nosaukumu my_list ar 4 veselu skaitļu kopu.
  6. Ievietojiet elementu 11 saraksta priekšā ar nosaukumu my_list.
  7. Ievietojiet 18. elementu saraksta beigās ar nosaukumu my_list.
  8. Izveidojiet to un to izmantojiet, lai no saraksta my_list atrastu elementu 10.
  9. Izmantojiet if paziņojumu, lai noteiktu, vai iepriekš minētais elements tika atrasts.
  10. Ievietojiet elementu 21 pirms iepriekš minētā elementa, ja tas tika atrasts.
  11. Ja paziņojuma pamatteksta beigas.
  12. Izmantojiet a for loop, lai izveidotu cilpas mainīgo x. Šis mainīgais tiks izmantots, lai atkārtotu saraksta elementus.
  13. Konsolē izdrukājiet saraksta vērtības.
  14. Par cilpu ķermeņa beigas.
  15. Galvenās () funkcijas ķermeņa beigas.

Dzēšana no saraksta

Ir iespējams izdzēst vienumus no saraksta. Funkcija erase () ļauj no saraksta izdzēst vienumu vai objektu diapazonu.

  • Lai izdzēstu vienu vienumu, jums vienkārši jānokārto viena vesela skaitļa pozīcija. Vienums tiks izdzēsts.
  • Lai izdzēstu diapazonu, jūs nododat sākuma un beigu atkārtotājus. Parādīsim to.

4. piemērs:

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

Izeja:

Šeit ir koda ekrānuzņēmums:

Koda skaidrojums:

  1. Iekļaujiet algoritma galvenes failu, lai izmantotu tā funkcijas.
  2. Iekļaujiet iostream galvenes failu, lai izmantotu tā funkcijas.
  3. Iekļaujiet saraksta galvenes failu, lai izmantotu tā funkcijas.
  4. Iekļaujiet standarta nosaukumvietu mūsu programmā, lai izmantotu tās klases, to neizsaucot.
  5. Izsauciet galveno () funkciju. Šīs funkcijas pamattekstā jāpievieno programmas loģika.
  6. Izveidojiet sarakstu ar nosaukumu my_list ar 4 veselu skaitļu kopu.
  7. Izdrukājiet tekstu konsolē.
  8. Izmantojiet a for loop, lai izveidotu cilpas mainīgo x. Šis mainīgais tiks izmantots, lai atkārtotu saraksta elementus.
  9. Konsolē izdrukājiet saraksta vērtības.
  10. For cilpas korpusa beigas.
  11. Izveidojiet iteratoru i, kas norāda uz saraksta pirmo elementu.
  12. Izmantojiet iteratora norādīto dzēšanas () funkciju i.
  13. Izdrukājiet tekstu konsolē.
  14. Izmantojiet a for loop, lai izveidotu cilpas mainīgo x. Šis mainīgais tiks izmantots, lai atkārtotu saraksta elementus.
  15. Konsolē izdrukājiet saraksta vērtības. Tas notiek pēc dzēšanas.
  16. For cilpas korpusa beigas.
  17. Pēc sekmīgas pabeigšanas programmai jāatgriež vērtība.
  18. Galvenās () funkcijas ķermeņa beigas.

Kopsavilkums:

  • Std :: list ir glabāšanas konteiners.
  • Tas ļauj ievietot un dzēst vienumus no jebkuras vietas nemainīgā laikā.
  • Tas tiek ieviests kā divkārša saite
  • Standarta :: saraksta datiem var piekļūt divvirzienu un secīgi.
  • std :: list neatbalsta ātru izlases piekļuvi. Tomēr tas atbalsta secīgu piekļuvi no visiem virzieniem.
  • Varat izkliedēt std :: list saraksta elementus dažādos atmiņas gabalos.
  • Vajadzības laikā izpildes laikā varat samazināt vai paplašināt std :: list no abiem galiem.
  • Lai ievietotu vienumus std :: list, mēs izmantojam funkciju insert ().
  • Lai izdzēstu vienumus no std :: saraksta, mēs izmantojam funkciju dzēst ().