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.
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:
- Itakda
- Multiset
- Mapa
- 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.