C stl térkép és beállítás

A nap minden kedves ideje!

Szóval, kezdjük el. Mint sokan tudják, a "set" az angolul "set" -ként lett lefordítva. Innen logikus következtetést vonhatunk le, hogy a készlet olyan adatstruktúra, amely a készletet matematikai objektumként valósítja meg. A C ++ 11-ben a készlet két különböző megvalósítása létezik. Az első a C ++ 98-ból származik. Ez egy normál készlet, és egy vörös-fekete fa megvalósításán alapul. A második megvalósítás rendezetlen _ beállítva. amelyet a C ++ szabvány 11 bevezetésével "legalizáltak". A hash táblákon alapul.

A következő hasznos műveletek a következőkre vonatkoznak:

Ami sok más stl tartályt illeti, egy készlet bejelentéséhez regisztrálni kell

A konstrukciót is használhatja a tároló azonnal inicializálására. Inicializálható egy másik tárolóval vagy egy pár iterátorral [először. utolsó).

Ez a túlterhelt funkcióbetéten keresztül történik. Hívása szintaxisa:

Itt vannak a főbb lehetőségek:

Egy értéket, értéket kell beilleszteni a készletbe, és visszatér egy iterátor párhoz, amely a beillesztett elemre mutat és egy bool változót, amely a beillesztés "sikerét" jelzi. Ie 1 - a beillesztés történt, 0 - nem. Ezt a funkciót logaritmussá teszik a tároló méretétől, azaz O (logn).

Az érték értékét és a cimű iterátort veszi, és megpróbálja az elemet a lehető legközelebb beilleszteni a cimű iterátorhoz. Ha a beillesztés közvetlenül a célzást követő vagy azt megelőzően történik. akkor a funkció O (1) -re működik. egyébként O (logn).

Hozzáadja az összes elemet, amely az O ((utolsó - első) logn) után az első (utolsó) intervallumban van. Az InputIt-nek meg kell felelnie az InputIterator követelményeinek. azaz támogatja az alábbi műveleteket:

Ebben az esetben a beállított elemeken lévő összes mutató és iterátor működik. Érdemes megjegyezni, hogy a készlet egy ugyanolyan értékű elemnek csak egy előfordulását támogatja, de ha a készlet már tartalmaz egy ilyen értékű elemet, akkor nem kerül hozzáadásra. Van azonban egy multiset szerkezet. amely ugyanazon elem többszörös előfordulását támogatja. Azonban a műveletek, a kicsi árnyalatok kivételével, megegyeznek a készleten végrehajtott műveletekkel, ezért nem fogják itt figyelembe venni.

Számos különböző funkciót talál a készletben. Itt vannak:

Számolja meg a kulcs kulcsainak számát a tartály kulcsával. Nyilvánvaló, hogy a tároló tulajdonságai miatt ez a függvény 0 vagy 1-et ad vissza. O (logn) esetén működik.

Megtalálja a kulcselemet. Ha egy elemet talál, akkor egy iterátort visz vissza rajta, ellenkező esetben a tartály végén (). Működik O (logn) számára.

Az iterátort a készlet első eleméhez adja ki, amely nagyobb vagy egyenlő a kívánt értékkel. O (logn).

Visszaadja az iterátort a készlet első eleméhez, amely szigorúan nagyobb, mint amit keres. O (logn).

Figyelj! Ezeknek a funkcióknak a megfelelő használatához a konténer tagfunkcióinak nevezheti őket.

Van egy túlterhelt törlés () funkció. amely lehetővé teszi az elemek törlését. Itt vannak a főbb lehetőségek:

Eltávolítja az elemet az iterátor által meghatározott helyen. Az amortizált komplexitás O (1).

Eltávolítja az összes elemet a kulcsértékkulccsal. Világos, hogy ha csak egy sor. de nem több. az ilyen elemek száma nem haladja meg az 1 értéket. Az O (logn + count (kulcs)) működik.

Eltávolítja az összes elemet az első (utolsó) tartományban. O (logn + távolság (első, utolsó)) működik.

Most beszéljünk a térképről. A név a mapping - asszociatív tömbből származik. A műveletek szinte azonosak. azonban a tartály elemeiben nem tárol egy értéket, hanem kulcs-érték párokat. A rendezés ebben az esetben ugyanúgy történik, mint a párok szokásos rendezésével - először az első elemek összevetése a párban, majd az egyenlőség esetén a második elemet hasonlítják össze. Érdemes megemlíteni az indexek kezelésének nagyon kényelmes végrehajtását is. Itt például a kód:

Először hozzon létre egy pár ("tíz", 10) a konténer teszt_ térképen, majd változtassa meg a második elemet 8-ra.

rendezetlen _ set és rendezetlen _ térkép támogatja a legtöbb támogatott műveletek a beállított és a térképet. de, átlagosan, úgy végezzük O (1). Ennek ellenére nem mindig hasznosak a felhasználáshoz, mert rendezetlen eszköz rendezetlen, azaz nem rendezett. elemeket nem támogatják rendezett sorrendben. Ezért nem tudjuk használni az ilyen tartályok, például piramis válogatás, és nem tudjuk O (1) hozzáférés a legnagyobb és a legkisebb eleme a készüléket, és a térképet. És ennek eredményeként a betegség, nem tudjuk használni ezeket a tartályokat működés alacsonyabb _ kötött és a felső _ kötött.

Végül javasolhatok olyan feladatokat, amelyek könnyen megoldhatók (az STL nélküli megoldáshoz képest) ezen adatstruktúrák felhasználásával:

Ui Megértettem, hogy a cikket nem fejezik ki teljesen a cikkben, bár megpróbáltam megtenni. Ha bármilyen kérdése vagy észrevétele van az olvasás után, akkor megmondhatja.

STL. beállítva. térkép