STL c ++ nyelven: Minden, amit tudnod kell



Ez a cikk részletes és átfogó ismereteket nyújt az STL-ről a C ++ nyelven, és ötletet ad a különböző tárolókról is.

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.

Container-STL-in-C++

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:

  1. Készlet
  2. Multiset
  3. Térkép
  4. 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.