STL sa c ++: Lahat ng Kailangan Mong Malaman



Ang artikulong ito ay magbibigay sa iyo ng isang Detalyado at Comprehensive kaalaman ng STL sa C ++ at bibigyan ka ng isang ideya tungkol sa iba't ibang mga lalagyan din.

Ang Standard Template Library (STL) ay isang hanay ng mga klase ng template ng C ++ upang magbigay ng mga karaniwang istraktura ng data at pag-andar ng data tulad ng mga listahan, stack, array, atbp. Sa artikulong ito ng STL sa C ++ tatalakayin namin ang mga sumusunod na payo:

Nagpapatuloy sa artikulong ito sa STL sa C ++





C ++ Mga Template

Nagbibigay sa amin ang C ++ ng isang tampok ng mga template na nagpapahintulot sa mga pag-andar at klase na gumana sa mga generic na uri. Pinapayagan nito ang muling paggamit ng isang pagpapaandar o klase at pinapayagan itong gumana sa maraming iba't ibang mga uri ng data nang hindi nasusulat muli para sa bawat isa.

Nagpapatuloy sa artikulong ito sa STL sa C ++



Mga pangkalahatang pag-andar at STL

Habang ang pagprogram ng maraming beses sa oras ay kailangan para sa paglikha ng mga pagpapaandar na gumaganap ng parehong operasyon ngunit gumagana sa iba't ibang mga uri ng data. Kaya upang mapagtagumpayan ang problemang ito ang C ++ ay nagbibigay ng isang tampok upang lumikha ng isang solong pangkalahatang pag-andar sa halip na maraming mga pagpapaandar na maaaring gumana sa iba't ibang uri ng data sa pamamagitan ng paggamit ng template ng parameter. Ang koleksyon ng mga genric na klase at pag-andar na ito ay tinatawag na Standard Template Library (STL)

Ang mga bahagi ng STL na bahagi na ngayon ng karaniwang C ++ library ay tinukoy sa namespace std. Kailangan, samakatuwid, na gamitin ang direktoryo ng paggamit ng namespace upang mai-import ang mga ito sa aming programa.

Syntax:



Paggamit ng namespace std

Ang STL ay may tatlong mga sangkap

  • Mga lalagyan

  • Mga algorithm

  • Iterator

Ang tatlong mga sangkap na ito ay nagtutulungan sa isa't isa sa synergy upang magbigay ng suporta sa iba't ibang mga solusyon sa programa. Gumagamit ang mga algorithm ng mga iterator upang maisagawa ang operasyon na nakaimbak sa mga lalagyan.

Ang isang lalagyan ay isang bagay na nag-iimbak ng data sa memorya sa isang organisadong paraan. Ang mga lalagyan sa STL ay ipinatupad ng mga klase ng template at samakatuwid ay maaaring madaling mabago at ipasadya upang hawakan ang iba't ibang mga uri ng data.

Ang isang pamamaraan na ginagamit upang maproseso ang data na nilalaman sa mga lalagyan ay tinukoy bilang isang algorithm. Nagsasama ang STL ng maraming iba't ibang mga uri ng mga algorithm upang magbigay ng suporta sa mga gawain tulad ng pagsisimula, paghahanap, pagkopya, pag-uuri, at pagsasama, pagkopya, pag-uuri, at pagsasama. Ang mga algorithm ay ipinatupad ng mga pag-andar ng template.

Ang isang iterator ay maaaring tukuyin bilang isang bagay na tumuturo sa isang elemento sa isang lalagyan. Maaaring magamit ang Iterator upang ilipat ang mga nilalaman ng mga lalagyan. Ang mga Iterator ay hinahawakan tulad ng mga payo. Maaari nating dagdagan o mabawasan ang mga ito. Ang mga Iterator ay kumokonekta sa algorithm sa mga lalagyan at may mahalagang papel sa pagmamanipula ng data na nakaimbak sa mga lalagyan.

Container-STL-in-C++

Nagpapatuloy sa artikulong ito sa STL sa C ++

Mga lalagyan

Tinutukoy ng STL ang sampung lalagyan na pinagsama sa tatlong kategorya.

kung paano hawakan ang popup sa siliniyum

Mga lalagyan

Paglalarawan

File ng header

Iterator

Vector

Maaari itong tukuyin bilang isang pabagu-bagong array. Pinapayagan nito ang direktang pag-access sa anumang elemento.

Random na pag-access

Listahan

Ito ay isang listahang linear na listahan. Pinapayagan ang pagpapasok at pagtanggal kahit saan

Patawad

at

Ito ay isang pila na may dobleng pagtatapos. Pinapayagan ang mga pagpasok at pagtanggal sa parehong mga dulo. Pinahihintulutan ang direktang pag-access sa anumang elemento.

Random na pag-access

itakda

Ito ay isang associate container para sa pagtatago ng mga natatanging hanay. Pinapayagan ang mabilis na paghanap.

Patawad

multiset

Ito ay isang associate container para sa pagtatago ng mga hindi natatanging hanay.

Patawad

mapa

Ito ay isang associate container para sa pag-iimbak ng natatanging mga pares ng key / halaga. Ang bawat key ay naiugnay sa isang halaga lamang.

Patawad

multimap

Ito ay isang associate container para sa pag-iimbak ng susi / halaga kung saan ang isang key ay maaaring maiugnay sa higit sa isang halaga (isa-sa-maraming pagmamapa). Pinapayagan nito ang isang paghahanap na batay sa susi.

Patawad

salansan

Sinusundan ng isang karaniwang stack ang huling-sa-unang-labas (LIFO)

Walang iterator

pila

Ang isang karaniwang pila ay sumusunod sa first-in-first-out (FIFO)

Walang iterator

priyoridad-pila

Ang unang element out ay palaging ang pinakamataas na elemento ng priyoridad

Walang iterator

Mga Lalagyan ng Sequence

Ang mga container container ay nag-iimbak ng mga elemento sa isang linear order. Ang lahat ng mga elemento ay nauugnay sa bawat isa sa pamamagitan ng kanilang posisyon sa linya. Pinapayagan nila ang pagpapasok ng elemento at lahat ng mga ito ay sumusuporta sa ilang mga operasyon sa kanila.

Nagbibigay ang STL ng tatlong uri ng mga elemento ng pagkakasunud-sunod:

  • Vector
  • Listahan
  • at

Mga nauugnay na lalagyan:

Ang mga ito ay dinisenyo sa isang paraan na maaari nilang suportahan ang direktang pag-access sa mga elemento na gumagamit ng mga susi. Hindi sila sunud-sunod. Mayroong apat na uri ng

mga kaugnay na lalagyan:

  1. Itakda
  2. Multiset
  3. Mapa
  4. Multimap

Ang lahat ng mga lalagyan sa itaas ay nag-iimbak ng data sa isang istrakturang tinatawag na puno na nagpapabilis sa mabilis

paghahanap, pagtanggal, at pagpapasok hindi katulad ng sunud-sunod. Ang hanay ng lalagyan o multiset ay maaaring mag-imbak ng iba't ibang mga item at magbigay ng mga pagpapatakbo para sa pagmamanipula ng mga ito gamit ang mga halaga bilang mga susi.

At ang mapa o Multimap ay ginagamit upang mag-imbak ng mga item nang pares, ang isa ay tinawag na susi at iba pa

tinawag ang halaga.

Mga nakuhang lalagyan:

Nagbibigay ang STL ng tatlong nagmula sa mga lalagyan na katulad, stack, pila, at priority_queue. Kilala rin ito bilang mga adapter ng lalagyan.

Mayroong tatlong uri ng mga nagmula na lalagyan:

1. Stack

2.Queue

3.Priority_quue

Ang mga stack, pila at priyoridad na pila ay madaling malikha mula sa iba't ibang mga lalagyan ng pagkakasunud-sunod. Ang mga nagmula sa lalagyan ay hindi sumusuporta sa mga iterator at samakatuwid ay hindi namin maaaring gamitin ang mga ito para sa pagmamanipula ng data. Gayunpaman, sinusuportahan nila ang dalawang member function pop () at push () para sa pagpapatupad ng pagtanggal at pagpasok ng mga operasyon.

Nagpapatuloy sa artikulong ito sa STL sa C ++

Mga algorithm

Ang mga algorithm ay mga pagpapaandar na maaaring magamit sa pangkalahatan sa iba't ibang mga lalagyan para sa pagpoproseso ng kanilang nilalaman. Kahit na ang bawat lalagyan ay nagbibigay ng mga pagpapaandar para sa pangunahing mga pagpapatakbo nito, ang STL ay nagbibigay ng higit sa animnapung pamantayang mga algorithm upang suportahan ang higit na pinalawak o kumplikadong pagpapatakbo. Pinapayagan din kami ng mga karaniwang algorithm na gumana kasama ang dalawang magkakaibang uri ng mga lalagyan nang sabay.

Ang mga algorithm ng STL ay nagpapatibay sa pilosopiya ng muling paggamit. Sa pamamagitan ng paggamit ng mga algorithm na ito, maaaring makatipid ng maraming oras at pagsisikap ang mga programmer. Upang magkaroon ng pag-access sa mga STL algorithm, dapat naming isama sa aming programa.

Ang STL algorithm, batay sa likas na katangian ng mga pagpapatakbo na ginagawa nila, ay maaaring mai-kategorya sa ilalim ng:

  • Mga algorithm na hindi nagpapagana

  • Mutating algorithm

  • Pag-uuri ng mga algorithm

  • Itakda ang mga algorithm

  • Kaugnay na algorithm

Nagpapatuloy sa artikulong ito sa STL sa C ++

Iterator:

Ang mga Iterator ay kumikilos tulad ng mga payo at ginagamit upang ma-access ang mga elemento ng lalagyan. Gumagamit kami ng mga iterator upang ilipat ang mga nilalaman ng mga lalagyan. Ang mga Iterator ay hinahawakan tulad ng mga payo. Maaari naming dagdagan o bawasan ang mga ito alinsunod sa aming mga kinakailangan. Ang mga Iterator ay nagkokonekta ng mga lalagyan na may mga algorithm at may mahalagang papel sa pagmamanipula ng data na nakaimbak sa mga lalagyan. Kadalasan ginagamit sila upang dumaan mula sa isang elemento patungo sa isa pa, ang prosesong ito ay tinatawag na umuulit sa pamamagitan ng lalagyan.

Mayroong limang uri ng mga iterator:

1. Input

2. Output

3. Ipasa

4. Direksyon

5.Random

Iterator

Paraan ng pag-access

Direksyon ng paggalaw

Kakayahang I / O

Pahayag

Input

Linear

Forward lang

Basahin lamang

Hindi mai-save

Paglabas

Linear

Forward lang

Sumulat lamang

Hindi mai-save

Pasulong

Linear

Forward lang

Basa sulat

Maaaring mai-save

Patawad

Linear

Pasulong at paatras

Basa sulat

Maaaring mai-save

Random

Random

Pasulong at paatras

Basa sulat

Maaaring mai-save

Ang iba't ibang mga uri ng mga iterator ay dapat gamitin sa iba't ibang mga uri ng mga lalagyan na tulad lamang

pinapayagan ang pagkakasunud-sunod at mga nauugnay na lalagyan na maglakbay sa pamamagitan ng mga iterator. Ang bawat uri ng mga iterator ay ginagamit para sa pagsasagawa ng ilang mga pag-andar. Sinusuportahan ng input at output iterators ang hindi gaanong mga pagpapaandar. Maaari lamang silang magamit upang dumaan sa isang lalagyan. Sinusuportahan ng mga forward iterator ang lahat ng pagpapatakbo ng input at output iterators at pinapanatili din ang posisyon nito sa lalagyan. Ang isang Bidirectional iterator, habang sinusuportahan ang lahat ng mga pagpapatakbo ng forward iterators, ay nagbibigay ng kakayahang lumipat sa pabalik na direksyon sa lalagyan.

Sa gayon ay natapos na kami sa artikulong ito sa 'STL in C ++'. Kung nais mong matuto nang higit pa, tingnan ang ni Edureka, isang pinagkakatiwalaang kumpanya sa pag-aaral sa online. Ang kurso sa pagsasanay at sertipikasyon ng Java J2EE at SOA ng Edureka ay idinisenyo upang sanayin ka para sa parehong core at advanced na mga konsepto ng Java kasama ang iba't ibang mga balangkas ng Java tulad ng Hibernate & Spring.

May tanong ba sa amin? Mangyaring banggitin ito sa seksyon ng mga komento ng blog na ito at babalikan ka namin sa lalong madaling panahon.