A Standard Template Library (STL) a C ++ sablonosztályok összessége, amelyek közös programozási adatstruktúrákat és funkciókat biztosítanak, például listákat, halmokat, tömböket stb. Ebben a C ++ cikkben szereplő STL-ben a következő mutatókkal foglalkozunk:
Továbblépve ezzel a cikkel az STL-re a C ++ nyelven
C ++ sablonok
A C ++ a sablonok egy olyan tulajdonságát biztosítja számunkra, amely lehetővé teszi a függvények és osztályok általános típusokkal való működését. Ez lehetővé teszi egy funkció vagy osztály újrafelhasználhatóságát, és lehetővé teszi, hogy számos különböző adattípuson dolgozzon, anélkül, hogy mindegyikhez újraírnák.
Továbblépve ezzel a cikkel az STL-re a C ++ nyelven
Általános funkciók és STL
A sokszoros programozás során szükség van olyan funkciók létrehozására, amelyek ugyanazokat a műveleteket hajtják végre, de különböző adattípusokkal működnek. Tehát ennek a problémának a kiküszöbölésére a C ++ egy olyan funkciót kínál, amely egyetlen függvényt hoz létre számos funkció helyett, amelyek különböző adattípusokkal működhetnek a sablon paraméter használatával. Ezeknek a klasszikus osztályoknak és függvényeknek a gyűjteményét Standard Template Library (STL) néven hívják
Az STL összetevői, amelyek most a standard C ++ könyvtár részét képezik, a std névtérben vannak meghatározva. Ezért a névtér-irányelv használatával kell importálnunk őket a programunkba.
Szintaxis:
A névtér szabványos használata
Az STL három részből áll
Konténerek
Algoritmusok
Iterátorok
Ez a három komponens szinergiában működik együtt, hogy támogatást nyújtson a különféle programozási megoldásokhoz. Az algoritmus iterátorokat alkalmaz a konténerekben tárolt műveletek végrehajtására.
A tároló olyan objektum, amely szervezett módon tárolja az adatokat a memóriában. Az STL tárolókat sablon osztályok valósítják meg, ezért könnyen módosíthatók és testreszabhatók különböző típusú adatok tárolására.
A tárolókban található adatok feldolgozására szolgáló eljárást algoritmusként definiálják. Az STL sokféle algoritmust tartalmaz, amelyek támogatják az olyan feladatokat, mint az inicializálás, keresés, másolás, rendezés és egyesítés, másolás, rendezés és egyesítés. Az algoritmusokat sablonfüggvények valósítják meg.
Az iterátor meghatározható olyan objektumként, amely a tároló egyik elemére mutat. Az iterátorok segítségével a tartályok tartalma áthaladhat. Az iterátorokat ugyanúgy kezelik, mint a mutatókat. Növelhetjük vagy csökkenthetjük őket. Az iterátorok összekapcsolják az algoritmust a tárolókkal, és kulcsszerepet játszanak a tárolókban tárolt adatok manipulálásában.
Továbblépve ezzel a cikkel az STL-re a C ++ nyelven
Konténerek
Az STL tíz konténert határoz meg, amelyek három kategóriába vannak csoportosítva.
Konténerek | Leírás | Fejlécfájl | Iterátor |
Vektor | Dinamikus tömbként definiálható. Bármely elemhez közvetlen hozzáférést tesz lehetővé. | Véletlenszerű hozzáférés | |
Lista | Kétirányú lineáris lista. Lehetővé teszi bárhol a beillesztést és a törlést | Kétirányú | |
és | Ez egy kettős végű sor. Lehetővé teszi a beillesztéseket és a törléseket mindkét végén. Közvetlen hozzáférést tesz lehetővé bármely elemhez. | Véletlenszerű hozzáférés | |
készlet | Ez egy társított tároló egyedi készletek tárolásához. Gyors keresést tesz lehetővé. | Kétirányú | |
multiset | Ez egy társított tároló nem egyedi készletek tárolásához. | Kétirányú | |
térkép | Ez egy társított tároló egyedi kulcs / érték párok tárolásához. Minden kulcshoz csak egy érték társul. | Kétirányú | |
multimap | Ez egy társított tároló kulcs / érték tárolásához, amelyben egy kulcs társulhat egynél több értékkel (egy-sok hozzárendelés). Lehetővé teszi a kulcsalapú keresést. | Kétirányú | |
Kazal | Egy szabványos verem követi az utolsó az elsőben kimenetet (LIFO) mi az adatszerkezet a java-ban | Nincs iterátor | |
sor | Az első az első az elsőben (FIFO) szabványos sorban áll | Nincs iterátor | |
prioritás-sor | Az első elem mindig a legmagasabb prioritású elem | Nincs iterátor |
Szekvencia konténerek
A szekvencia konténerek lineáris sorrendben tárolják az elemeket. Minden elem a vonal mentén elfoglalt helyzetük szerint kapcsolódik egymáshoz. Lehetővé teszik az elem beillesztését, és mindegyik több műveletet támogat rajtuk.
Az STL háromféle szekvenciaelemet kínál:
- Vektor
- Lista
- és
Asszociatív konténerek:
Úgy vannak megtervezve, hogy a kulcsok segítségével támogassák az elemek közvetlen elérését. Nem szekvenciálisak. Négyféle lehet
asszociatív konténerek:
- Készlet
- Multiset
- Térkép
- Multimap
A fenti konténerek az adatokat egy fa nevű struktúrában tárolják, ami gyorsan elősegíti
keresés, törlés és beillesztés a szekvenciálisaktól eltérően. A tárolókészlet vagy a multiset különböző elemeket tárolhat, és műveleteket adhat azok manipulálására az értékek kulcsként történő felhasználásával.
A térkép vagy a Multimap az elemek páros tárolására szolgál, az egyiket kulcsnak hívják, a másikat
értéknek hívják.
Származtatott konténerek:
Az STL három származtatott tárolót kínál, nevezetesen: verem, sor és prioritási sor. Ezeket tartályadaptereknek is nevezik.
A származtatott tartályoknak három típusa van:
1. Verem
2. Sor
3. Prioritás_sor
Verem, sor és prioritási sor könnyen létrehozható különböző szekvencia-tárolókból. A származtatott tárolók nem támogatják az iterátorokat, ezért nem használhatjuk őket adatkezelésre. Támogatnak azonban két tagú pop () és push () függvényt a törlési és beillesztési műveletek végrehajtásához.
Továbblépve ezzel a cikkel az STL-re a C ++ nyelven
Algoritmusok
Az algoritmusok olyan funkciók, amelyek általában különféle konténerekben használhatók a tartalmuk feldolgozására. Bár minden egyes tároló funkciókat biztosít az alapműveleteihez, az STL több mint hatvan standard algoritmust biztosít a kiterjesztettebb vagy összetettebb műveletek támogatására. A szokásos algoritmusok lehetővé teszik számunkra, hogy egyszerre két különböző típusú tárolóval dolgozzunk.
Az STL algoritmusok megerősítik az újrafelhasználhatóság filozófiáját. Ezen algoritmusok használatával a programozók sok időt és erőfeszítést takaríthatnak meg. Az STL algoritmusokhoz való hozzáféréshez be kell építenünk a programunkba.
Az általuk végzett műveletek jellege alapján az STL algoritmus az alábbiakba sorolható:
Nem mutáló algoritmusok
Mutáló algoritmusok
Algoritmusok rendezése
Állítson algoritmusokat
Relációs algoritmus
Továbblépve ezzel a cikkel az STL-re a C ++ nyelven
Iterátorok:
Az iterátorok mutatóként viselkednek, és a tároló elemeihez való hozzáféréshez használják őket. Iterátorok segítségével mozoghatunk a konténerek tartalmában. Az iterátorokat ugyanúgy kezelik, mint a mutatókat. Növelhetjük vagy csökkenthetjük őket a követelményeinknek megfelelően. Az iterátorok összekapcsolják a konténereket algoritmusokkal, és létfontosságú szerepet játszanak a konténerekben tárolt adatok manipulálásában. Gyakran használják egyik elemről a másikra való áthaladásra, ezt az eljárást iterálásnak nevezik a tartályon keresztül.
Ötféle iterátor létezik:
1. Bemenet
2. Kimenet
3. Előre
4. Kétirányú
5. Véletlenszerű
Iterátor | Hozzáférési módszer | A mozgás iránya | I / O képesség | Megjegyzés |
Bemenet | Lineáris | Csak előre | Csak olvasható | Nem lehet menteni |
Kimenet | Lineáris | Csak előre | Csak írjon | Nem lehet menteni |
Előre | Lineáris | Csak előre | Ír olvas | Menthető |
Kétirányú | Lineáris | Előre és hátra | Ír olvas | Menthető |
Véletlen | Véletlen | Előre és hátra | Ír olvas hogyan lehet megvalósítani az elvont módszert a java-ban | Menthető |
Különböző típusú iterátorokat kell használni a különböző típusú tartályokkal, csak úgy
a szekvenciák és az asszociatív konténerek az iterátorokon keresztül haladhatnak. Minden típusú iterátor bizonyos funkciók végrehajtására szolgál. Az input és output iterátorok támogatják a legkevesebb funkciót. Csak tartályban történő áthaladásra használhatók. A továbbított iterátorok támogatják a bemeneti és kimeneti iterátorok összes műveletét, és megtartják pozícióját a konténerben is. A kétirányú iterátor támogatja az összes előre haladó iterátor műveletet, de lehetővé teszi a tartályban hátrafelé történő mozgást.
Így véget értünk az „STL C ++ nyelven” cikkről. Ha többet szeretne megtudni, nézze meg a Edureka, egy megbízható online tanulási társaság. Az Edureka Java J2EE és SOA képzési és tanúsítási tanfolyamát arra tervezték, hogy mind az alapvető, mind a fejlett Java koncepciókra kiképezzen különféle Java keretrendszereket, például a Hibernate & Spring.
Van egy kérdésünk? Kérjük, említse meg a blog megjegyzés rovatában, és a lehető leghamarabb kapcsolatba lépünk Önnel.