Osztály és objektumok
Az osztály olyan változók és függvények együttese, amelyek együttesen működnek, ahol a változókhoz nincs hozzárendelve érték. Ha a változókhoz értékeket rendelünk, az osztály objektummá válik. Ugyanazon osztálynak adott különböző értékek különböző objektumokat eredményeznek; vagyis a különböző objektumok azonos osztályba tartoznak, különböző értékekkel. Egy objektum osztályból történő létrehozása állítólag az objektumot példányosítja.
A név, rendezetlen_térkép osztály. Az unordered_map osztályból létrehozott objektumnak programozó választott neve van.
Egy osztályhoz tartozó függvényre van szükség egy objektum példányosításához az osztályból. A C ++ nyelven ennek a függvénynek ugyanaz a neve, mint az osztály nevének. Az osztályból létrehozott (példányosított) objektumok különböző neveket kaptak a programozótól.
Objektum létrehozása az osztályból az objektum felépítését jelenti; instantizálást is jelent.
Az unordered_map osztályt használó C ++ program a fájl tetején a következő sorokkal kezdődik:
#include#include
névtér használata std;
Az első sor a bemenetre / kimenetre vonatkozik. A második sor lehetővé teszi a program számára az unordered_map osztály összes funkciójának használatát. A harmadik sor lehetővé teszi a program számára a nevek használatát a szokásos névtérben.
Funkció túlterhelése
Ha két vagy több különböző funkció aláírásnak ugyanaz a neve, akkor azt mondják, hogy ez a név túlterhelt. Egy függvény meghívásakor az argumentumok száma és típusa határozza meg, hogy melyik függvényt hajtják végre.
Építés / másolat készítése
Egyszerű konstrukció
Rendezetlen térkép az alábbiak szerint készíthető és rendelhető hozzá értékekhez:
rendezetlen_térképumap ["banán"] = "sárga";
umap ["szőlő"] = "zöld";
umap ["fig"] = "lila";
A deklaráció a sablon-specializációval kezdődik, a kulcs- és értékpárok típusaival. Ezt követi a programozó által kiválasztott név a térképhez; majd pontosvessző. A második kódszegmens megmutatja, hogyan lehet értékeket rendelni a kulcsaikhoz.
Az Initializer_list szerkesztése
Ez a következőképpen tehető meg:
"szőlő", "zöld", "ábra", "lila");
Építés az Initializer_list hozzárendelésével
Példa:
"szőlő", "zöld", "ábra", "lila";
Építés egy másik rendezetlen_térkép másolásával
Példa:
"szőlő", "zöld", "ábra", "lila");
rendezetlen_térkép
A pár Elem
Az alábbi kód bemutatja, hogyan hozható létre és hogyan érhető el a pár elem:
párcout << pr.first << '\n';
cout << pr.second << '\n';
A kimenet:
dtenger
az első és a második a pár két elemének van fenntartva. A párban lévő értékek továbbra is megváltoztathatók az első és a második használatával.
A rendezetlen térkép témakörében pár nevet kap, value_type.
unordered_map Elemi hozzáférés
mapped_type & operator [] (key_type && k)
Visszaadja a megfelelő kulcs értékét. Példa:
umap ["banán"] = "sárga";
umap ["szőlő"] = "zöld";
umap ["fig"] = "lila";
const char * ret = umap ["szőlő"];
cout << ret <<'\n';
A kimenet: „zöld”. Az értékeket ugyanúgy lehet hozzárendelni - lásd fent.
rendezetlen_térkép Kapacitás
size_type size () const noexcept
Visszaadja a párok számát a térképen.
umap ["banán"] = "sárga";
umap ["szőlő"] = "zöld";
umap ["fig"] = "lila";
cout << umap.size() <<'\n';
A kimenet 3.
bool üres () const noexcept
1 értéket ad igazra, ha a térképnek nincs párja, és 0 értéket ad hamisnak, ha párja van. Példa:
rendezetlen_térképcout << umap.empty() <<'\n';
A kimenet 1.
Visszatérő iterátorok és a rendezetlen térképű osztály
Az iterátor olyan, mint egy mutató, de több funkcióval rendelkezik, mint a mutató.
kezdődik () noexcept
Visszaad egy iterátort, amely a térképobjektum első párjára mutat, a következő kódszegmenshez hasonlóan:
rendezetlen_térképumap ["banán"] = "sárga"; umap ["szőlő"] = "zöld"; umap ["fig"] = "lila";
rendezetlen_térkép
pár
cout << pr.first << ", " << pr.second << '\n';
A kimenet: ábra, lila. A térkép rendezetlen.
begin () const noexcept;
Visszaad egy iterátort, amely a térképobjektum-gyűjtemény első elemére mutat. Amikor az objektum felépítését const előzi meg, a „begin () const” kifejezés kerül végrehajtásra a „begin ()” helyett. Ilyen feltétel mellett az objektum elemei nem módosíthatók. Például a következő kódban használják.
const rendezetlen_térkép"szőlő", "zöld", "ábra", "lila");
rendezetlen_térkép
pár
cout << pr.first << ", " << pr.second << '\n';
A kimenet: ábra, lila. A térkép rendezetlen. Vegye figyelembe, hogy a visszatérő iterátor fogadására ezúttal a const_iterator-t használták az iterátor helyett.
end () noexcept
Visszaad egy iterátort, amely közvetlenül a térképobjektum utolsó eleme fölé mutat.
end () const noexcept
Visszaad egy iterátort, amely közvetlenül a térképobjektum utolsó eleme fölé mutat. Ha a térképobjektum-konstrukciót megelőzi az const, akkor a „end () const” kifejezés kerül végrehajtásra.
unordered_map műveletek
iterátor keresés (const kulcs_típus és k)
Megkeresi az adott kulcs párját a térképen. Ha megtalálta, akkor visszaadja az iterátort. Ha nem található, akkor a térkép végére mutató iterátort ad vissza, amely nem pár. A következő kód megmutatja, hogyan kell használni ezt a tagfüggvényt:
rendezetlen_térképumap ['a'] = 'b'; umap ['c'] = 'd'; umap ['e'] = 'f';
rendezetlen_térkép
ha (umap.megtalálás ('c') != umap.vége ())
pár
cout << pr.first << ", " << pr.second << '\n';
A kimenet: c, d
const_iterator keresés (const kulcs_típusa & k) const;
A függvénynek ezt a verzióját hívjuk meg, ha a rendezetlen térkép létrehozása konst-el kezdődik, így a térkép összes eleme csak olvashatóvá válik.
unordered_map módosítók
pár
A rendezetlen térkép azt jelenti, hogy a párok nincsenek sorrendben. Tehát a program beilleszti a párosítást bármely olyan helyre, amelyet kényelmesnek talál. A függvény visszatér, párosít
umap ["banán"] = "sárga";
umap ["szőlő"] = "zöld";
umap ["fig"] = "lila";
umap.betét ("cseresznye", "piros", "eper", "piros");
cout << umap.size() << '\n';
A kimenet: 5. Több pár is beilleszthető.
size_type törlés (const key_type & k)
Ez a függvény töröl egy párot a rendezetlen_térképből. A következő kódszegmens szemlélteti:
rendezetlen_térképumap ["banán"] = "sárga";
umap ["szőlő"] = "zöld";
umap ["fig"] = "lila";
int num = umap.törlés ("szőlő");
cout << umap.size() << '\n';
A kimenet 2.
void swap (rendezetlen_térkép &)
Két rendezetlen térkép felcserélhető, amint ezt a kódszegmens mutatja:
"szőlő", "zöld", "füge", "lila", "eper", "piros";
rendezetlen_térkép
umap1.csere (umap2);
rendezetlen_térkép
pár
rendezetlen_térkép
pár
cout << "First key and size of umap1: "<< pr1.first <<", "<< umap1.size() << '\n';
cout << "First key and size of umap2 "<< pr2.first <<", "<< umap2.size() << '\n';
rendezetlen_térkép
"szőlő", "zöld", "füge", "lila", "eper", "piros";
rendezetlen_térkép
umap1.csere (umap2);
rendezetlen_térkép
pár
rendezetlen_térkép
pár
cout << "First key and size of umap1: "<< pr1.first <<", "<< umap1.size() << '\n';
cout << "First key and size of umap2 "<< pr2.first <<", "<< umap2.size() << '\n';
A kimenet:
Az első kulcs és az umap1 mérete: mész, 2
Az első kulcs és az umap2 eper mérete, 4
A térkép rendezetlen. Vegye figyelembe, hogy a térkép hossza szükség esetén megnövekszik. Az adattípusoknak azonosaknak kell lenniük.
Osztály és azonnali tárgyai
Az érték egy adattípusra vonatkozik, mint a példányosított objektum egy osztályra. A rendezetlen térképszerkezet egy osztályt is elfogadhat adattípusként. A következő program ezt szemlélteti:
#include#include
névtér használata std;
osztály TheCla
nyilvános:
int szám;
statikus char ch;
void func (char cha, const char * str)
cout << "There are " << num << " books worth " << cha << str << " in the store." << '\n';
statikus üresség (char ch)
ha (ch == 'a')
cout << "Official static member function" << '\n';
;
int main ()
TheCla obj1; TheCla obj2; TheCla obj3; TheCla obj4; TheCla obj5;
rendezetlen_térkép
umap = "banán", obj1, "szőlő", obj2, "ábra", obj3, "eper", obj4, "mész", obj5;
cout << umap.size() << '\n';
visszatér 0;
A kimenet: 5.
Az osztálydefiníciónak két adat nyilvános tagja és két nyilvános tag funkciója van. A main () függvényben az osztály különböző objektumait példányosítják. Ezután egy rendezetlen térképet példányosítanak, ahol minden pár egy gyümölcs nevéből és egy osztályból származó tárgyból áll. Megjelenik a térkép mérete. A program figyelmeztetés vagy hibaüzenet nélkül állít össze.
A Térkép alkalmazása
A tömb indexet társít az értékhez. Az élet számos helyzetében léteznek kulcs / érték párok, amelyek programozhatók. A gyümölcs / szín kulcs / érték pár csak egy példa. Egy másik példa az emberek neve és kora. Ebben az esetben a pár típus, pár lesz
Térkép kialakítása
A térkép nem kétdimenziós tömb, két oszloppal rendelkezik. A térkép hash funkcióval működik. A kulcsot a hash függvény kódolja egy tömb egész számává. Ez a tömb tartja az értékeket. Tehát valójában egy tömb van az értékekkel, és a kulcsok a tömb indexeihez vannak hozzárendelve, és így a kulcsok és az értékek megfelelnek. A hashing kiterjedt téma, és ez a cikk nem foglalkozik vele.
Következtetés
A térkép, más néven asszociatív tömb az elemek listája, ahol minden elem egy kulcs / érték pár. Tehát minden kulcs megfelel egy értéknek. A C ++ - ban a térkép adatstruktúraként valósul meg tagfunkciókkal és operátorokkal. A rendezett térkép az, ahol az elempárokat kulcsokkal rendezték. A rendezetlen térkép az, ahol nincs sorrend.
Technikailag a hash párból áll
A térkép inicializáló_listája egy literál tömb literál. Minden belső literál két objektumból áll, a kulcs / érték párból.
Az unordered_map tagfüggvényei és operátorai a következő címsorokba sorolhatók: unordered_map konstrukció / másolat készítés, unordered_map kapacitás, unordered_map iterátor, unordered_map műveletek és unordered_map módosítók.
Rendezetlen térképet használunk, ha egy kulcsot egy értékhez kell hozzárendelni.
Chrys