std :: listahan sa C ++ na may Halimbawa

Ano ang isang listahan ng std ::?

Sa C ++, ang listahan ng std :: ay tumutukoy sa isang lalagyan ng imbakan. Pinapayagan ka ng listahan ng std: na ipasok at alisin ang mga item mula saanman. Ang listahan ng std :: ay ipinatupad bilang isang listahan na doble na naka-link. Nangangahulugan ito na ma-access ang data ng listahan sa bi-directionally at sunud-sunod.

Hindi sinusuportahan ng listahan ng Standard Template Library ang mabilis na random na pag-access, ngunit sinusuportahan nito ang sunud-sunod na pag-access mula sa lahat ng direksyon.

Maaari mong ikalat ang mga elemento ng listahan sa iba't ibang mga memory chunks. Ang impormasyong kinakailangan para sa sunud-sunod na pag-access sa data ay nakaimbak sa isang lalagyan. Ang listahan ng std :: ay maaaring mapalawak at lumiit mula sa parehong mga dulo kung kinakailangan sa panahon ng runtime. Ang isang panloob na tagapaglaan ay awtomatikong natutupad ang mga kinakailangan sa pag-iimbak.

Sa tutorial na C ++ na ito, malalaman mo:

Bakit gumagamit ng listahan ng std ::?

Narito, ang mga dahilan ng paggamit ng std :: Listahan:

  • Ang listahan ng std :: ay mas mahusay na ihambing sa iba pang mga lalagyan ng pagkakasunud-sunod tulad ng array at vector.
  • Mayroon silang mas mahusay na pagganap sa pagpasok, paglipat, at pagkuha ng mga elemento mula sa anumang posisyon.
  • Ang listahan ng std :: ay mas mahusay din sa mga algorithm na gumaganap ng ganyang operasyon nang masinsinan.

Listahan ng Syntax

Upang tukuyin ang listahan ng std ::, kailangan naming i-import ang file ng header. Narito ang std :: listahan ng kahulugan ng kahulugan syntax:

 template  class list; 

Narito ang isang paglalarawan ng mga parameter sa itaas:

  • T - Tinutukoy ang uri ng sangkap na nilalaman.

    Maaari mong palitan ang T ng anumang uri ng data, kahit na mga uri na tinukoy ng gumagamit.

  • Alloc - Tinutukoy ang uri ng object ng tagapaglaan.

    Ginagamit nito ang template ng klase ng tagapaglaan bilang default. Nakasalalay ito sa halaga at gumagamit ng isang simpleng modelo ng paglalaan ng memorya.

Mga halimbawa 1:

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

Output:

Narito ang isang screenshot ng code:

Paliwanag sa Code:

  1. Isama ang file ng header ng algorithm upang magamit ang mga pagpapaandar nito.
  2. Isama ang iostream header file upang magamit ang mga pag-andar nito.
  3. Isama ang listahan ng file ng header upang magamit ang mga pag-andar nito.
  4. Tumawag sa pangunahing () pagpapaandar. Ang lohika ng programa ay dapat idagdag sa loob ng katawan ng pagpapaandar na ito.
  5. Lumikha ng isang listahan na pinangalanang my_list na may isang hanay ng 4 na integer.
  6. Gumamit ng isang para sa loop upang lumikha ng isang variable ng loop x. Ang variable na ito ay gagamitin upang umulit sa mga elemento ng listahan.
  7. I-print ang mga halaga ng listahan sa console.
  8. Wakas ng katawan ng para sa isang loop.
  9. Pagtatapos ng katawan ng pangunahing () pagpapaandar.

Mga Pag-andar ng Listahan ng C ++

Narito ang karaniwang std :: listahan ng mga pag-andar:

Pag-andar Paglalarawan
ipasok ()Ang pagpapaandar na ito ay nagsisingit ng isang bagong item bago ang posisyon na ituro ang puntos.
push_back ()Ang mga pagpapaandar na ito ay magdagdag ng isang bagong item sa pagtatapos ng listahan.
push_front ()Nagdaragdag ito ng isang bagong item sa harap ng listahan.
pop_front ()Tinatanggal nito ang unang item ng listahan.
laki ()Tinutukoy ng pagpapaandar na ito ang bilang ng mga elemento ng listahan.
harap ()Upang matukoy ang mga unang item ng listahan.
likod ()Upang matukoy ang huling item ng listahan.
baligtarin ()Binabaligtad nito ang mga item sa listahan.
pumunta ()Pinagsasama nito ang dalawang listahan ng pinagsunod-sunod.

Mga tagapagbuo

Narito ang listahan ng mga pagpapaandar na ibinigay ng header file:

  • Default na tagapagbuo std :: listahan :: listahan () - Lumilikha ito ng isang walang laman na listahan, iyon, na may mga zero elemento.
  • Punan ang tagapagbuo std :: listahan :: listahan () - Lumilikha ito ng isang listahan na may mga n elemento at nagtatalaga ng isang halaga ng zero (0) sa bawat elemento.
  • Saklaw na tagapagbuo std :: listahan :: listahan () - lumilikha ng isang listahan na may maraming mga elemento sa saklaw ng una hanggang huling.
  • Kopyahin ang tagapagbuo std :: listahan :: listahan () - Lumilikha ito ng isang listahan na may isang kopya ng bawat elemento na nilalaman sa umiiral na listahan.
  • Ilipat ang konstruktor std :: list :: list () - lumilikha ng isang listahan na may mga elemento ng isa pang listahan gamit ang paglipat ng mga semantika.
  • Initializer list konstruktor std :: list :: list () - Lumilikha ito ng isang listahan kasama ang mga elemento ng isa pang listahan gamit ang paglipat ng mga semantika.

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

Output:

Narito ang isang screenshot ng code:

Paliwanag sa Code:

  1. Isama ang iostream header file upang magamit ang mga pag-andar nito.
  2. Isama ang listahan ng file ng header upang magamit ang mga pag-andar nito.
  3. Isama ang std namespace sa code upang magamit ang mga klase nito nang hindi ito tinatawagan.
  4. Tumawag sa pangunahing () pagpapaandar. Ang lohika ng programa ay dapat idagdag sa loob ng katawan ng pagpapaandar na ito.
  5. Lumikha ng isang walang laman na listahan na pinangalanang l.
  6. Lumikha ng isang listahan na pinangalanang l1 na may isang hanay ng 3 integer.
  7. Lumikha ng isang listahan na pinangalanang l2 kasama ang lahat ng mga elemento sa listahan na pinangalanang l1, mula sa simula hanggang sa wakas.
  8. Lumikha ng isang listahan na pinangalanang l3 gamit ang paglipat ng mga semantika. Ang listahan ng l3 ay magkakaroon ng parehong nilalaman sa listahan ng l2.
  9. I-print ang laki ng listahan na pinangalanang l sa console kasama ang iba pang teksto.
  10. Mag-print ng ilang teksto sa console.
  11. Lumikha ng isang iterator na pinangalanan ito at gamitin ito upang umulit sa mga elemento ng listahan na pinangalanang l2.
  12. I-print ang mga elemento ng listahan na pinangalanang l2 sa console.
  13. Mag-print ng ilang teksto sa console.
  14. Lumikha ng isang iterator na pinangalanan ito at gamitin ito upang umulit sa mga elemento ng listahan na pinangalanang l3.
  15. I-print ang mga elemento ng listahan na pinangalanang l3 sa console.
  16. Dapat ibalik ang halaga ng programa sa matagumpay na pagkumpleto.
  17. Pagtatapos ng katawan ng pangunahing () pagpapaandar.

Mga katangian ng lalagyan

Narito ang listahan ng mga katangian ng lalagyan:

Pag-aari Paglalarawan
Pagkakasunud-sunodAng mga lalagyan ng pagkakasunud-sunod ay nag-order ng kanilang mga elemento sa isang mahigpit na linear na pagkakasunud-sunod. Ang mga elemento ay na-access sa pamamagitan ng kanilang posisyon sa pagkakasunud-sunod.
Listahan ng naka-link na dobleAng bawat elemento ay may impormasyon sa kung paano hanapin ang dati at susunod na mga elemento. Pinapayagan nito ang patuloy na oras para sa mga pagpapatakbo ng pagpapasok at pagtanggal.
May kamalayan sa AllocatorGinagamit ang isang bagay na tagapaglaan para sa pagbabago ng laki ng laki ng imbakan.

Pagpasok sa isang Listahan

Mayroong iba't ibang mga pagpapaandar na maaari naming magamit upang magsingit ng mga halaga sa isang listahan. Ipakita natin ito:

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

Output:

Narito ang isang screenshot ng code:

Paliwanag sa Code:

  1. Isama ang file ng header ng algorithm upang magamit ang mga pagpapaandar nito.
  2. Isama ang iostream header file upang magamit ang mga pag-andar nito.
  3. Isama ang listahan ng file ng header upang magamit ang mga pag-andar nito.
  4. Tumawag sa pangunahing () pagpapaandar. Ang lohika ng programa ay dapat idagdag sa loob ng katawan ng pagpapaandar na ito.
  5. Lumikha ng isang listahan na pinangalanang my_list na may isang hanay ng 4 na integer.
  6. Ipasok ang elemento 11 sa harap ng listahan na pinangalanang my_list.
  7. Ipasok ang elemento 18 sa dulo ng listahan na pinangalanang my_list.
  8. Lumikha ng isang iterator ito at ginagamit ito upang mahanap ang elemento 10 mula sa listahan ng my_list.
  9. Gumamit ng isang kung pahayag upang matukoy kung ang elemento sa itaas ay natagpuan o hindi.
  10. Ipasok ang elemento 21 bago ang elemento sa itaas kung ito ay natagpuan.
  11. Pagtatapos ng katawan ng kung pahayag.
  12. Gumamit ng isang para sa loop upang lumikha ng isang variable ng loop x. Ang variable na ito ay gagamitin upang umulit sa mga elemento ng listahan.
  13. I-print ang mga halaga ng listahan sa console.
  14. Wakas ng katawan ng para sa isang loop.
  15. Pagtatapos ng katawan ng pangunahing () pagpapaandar.

Pagtanggal mula sa isang Listahan

Posibleng tanggalin ang mga item sa isang listahan. Pinapayagan ka ng pag-andar na burahin () na tanggalin ang isang item o isang saklaw ng mga item mula sa isang listahan.

  • Upang tanggalin ang isang solong item, pumasa ka lamang sa isang posisyon na integer. Tatanggalin ang item.
  • Upang tanggalin ang isang saklaw, ipinapasa mo ang panimulang at ang nagtatapos na mga iterator. Ipakita natin ito.

Halimbawa 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 << '
'; } list::iterator i = my_list.begin(); my_list.erase(i); cout << '
List elements after deletion: '; for (int x : my_list) { std::cout << x << '
'; } return 0; } 

Output:

Narito ang screenshot ng code:

Paliwanag sa Code:

  1. Isama ang file ng header ng algorithm upang magamit ang mga pagpapaandar nito.
  2. Isama ang iostream header file upang magamit ang mga pag-andar nito.
  3. Isama ang listahan ng file ng header upang magamit ang mga pag-andar nito.
  4. Isama ang std namespace sa aming programa upang magamit ang mga klase nito nang hindi ito tinatawagan.
  5. Tumawag sa pangunahing () pagpapaandar. Ang lohika ng programa ay dapat idagdag sa loob ng katawan ng pagpapaandar na ito.
  6. Lumikha ng isang listahan na pinangalanang my_list na may isang hanay ng 4 na integer.
  7. Mag-print ng ilang teksto sa console.
  8. Gumamit ng isang para sa loop upang lumikha ng isang variable ng loop x. Ang variable na ito ay gagamitin upang umulit sa mga elemento ng listahan.
  9. I-print ang mga halaga ng listahan sa console.
  10. Dulo ng katawan ng para sa loop.
  11. Lumikha ng isang iterator i na tumuturo sa unang elemento ng listahan.
  12. Gamitin ang burahin () na pagpapaandar na itinuro ng iterator i.
  13. Mag-print ng ilang teksto sa console.
  14. Gumamit ng isang para sa loop upang lumikha ng isang variable ng loop x. Ang variable na ito ay gagamitin upang umulit sa mga elemento ng listahan.
  15. I-print ang mga halaga ng listahan sa console. Ito ay darating pagkatapos ng pagtanggal.
  16. Dulo ng katawan ng para sa loop.
  17. Dapat ibalik ng programa ang isang halaga sa matagumpay na pagkumpleto.
  18. Pagtatapos ng katawan ng pangunahing () pagpapaandar.

Buod:

  • Ang listahan ng std :: ay isang lalagyan ng imbakan.
  • Pinapayagan ang pagpasok at pagtanggal ng mga item mula sa kahit saan at pare-pareho ang oras.
  • Ito ay ipinatupad bilang isang dobleng-link
  • Ang data ng listahan ng std :: maaaring ma-access sa direksyon ng daloy at sunud-sunod.
  • Hindi sinusuportahan ng listahan ang std :: mabilis na random na pag-access. Gayunpaman, sinusuportahan nito ang sunud-sunod na pag-access mula sa lahat ng mga direksyon.
  • Maaari mong ikalat ang mga elemento ng listahan ng std :: listahan sa iba't ibang mga chunks ng memorya.
  • Maaari mong pag-urong o palawakin ang std :: listahan mula sa parehong mga dulo kung kinakailangan sa panahon ng runtime.
  • Upang ipasok ang mga item sa listahan ng std ::, ginagamit namin ang insert () na pagpapaandar.
  • Upang tanggalin ang mga item mula sa listahan ng std ::, ginagamit namin ang burahin () na pagpapaandar.