Kartat ovat osa C++ STL:ää (Standard Template Library). Kartat ovat assosiatiivisia säilöjä, joihin tallennetaan lajiteltu avain-arvo-pari, jossa jokainen avain on yksilöllinen ja se voidaan lisätä tai poistaa, mutta sitä ei voi muuttaa. Avaimiin liittyviä arvoja voidaan muuttaa.
Esimerkiksi: Työntekijöiden kartta, jossa työntekijän tunnus on avain ja nimi on arvo, voidaan esittää seuraavasti:
Avaimet | Arvot |
---|---|
101 | Nikita |
102 | Robin |
103 | Syvä |
104 | John |
Syntaksi
template <class key, map::key_type class t, map::mapped_type compare="less," map::key_compare alloc="allocator<pair"> // map::allocator_type > class map; </class>
Parametri
avain: Avaintietotyyppi, joka tallennetaan kartalle.
tyyppi: Karttaan tallennettavan arvon tietotyyppi.
vertailla: Vertailuluokka, joka ottaa kaksi samantyyppistä bool-argumenttia ja palauttaa arvon. Tämä argumentti on valinnainen ja binääripredikaatti vähemmän on oletusarvo.
alloc: Allokaattoriobjektin tyyppi. Tämä argumentti on valinnainen ja oletusarvo on allokaattori.
tehtaan suunnittelukuvio
Kartan luominen
Karttoja voidaan helposti luoda seuraavalla lauseella:
typedef pair value_type;
Yllä olevaa lomaketta käytetään luomaan kartta avaimella Avaimen tyyppi ja tyypin arvo arvon tyyppi. Yksi tärkeä asia on, että kartan avain ja vastaavat arvot lisätään aina parina, et voi lisätä vain avainta tai vain arvoa karttaan.
Esimerkki 1
#include #include #include #include using namespace std; int main() { map Employees; // 1) Assignment using array index notation Employees[101] = 'Nikita'; Employees[105] = 'John'; Employees[103] = 'Dolly'; Employees[104] = 'Deep'; Employees[102] = 'Aman'; cout << 'Employees[104]=' << Employees[104] << endl << endl; cout << 'Map size: ' << Employees.size() << endl; cout << endl << 'Natural Order:' << endl; for( map::iterator ii=Employees.begin(); ii!=Employees.end(); ++ii) { cout << (*ii).first << ': ' << (*ii).second << endl; } cout << endl << 'Reverse Order:' << endl; for( map::reverse_iterator ii=Employees.rbegin(); ii!=Employees.rend(); ++ii) { cout << (*ii).first << ': ' << (*ii).second << endl; } }
Lähtö:
Employees[104]=Deep Map size: 5 Natural Order: 101: Nikita 102: Aman 103: Dolly 104: Deep 105: John Reverse Order: 105: John 104: Deep 103: Dolly 102: Aman 101: Nikita
Jäsentoiminnot
Alla on luettelo kaikista kartan jäsentoiminnoista:
Rakentaja/tuhoaja
Toiminnot | Kuvaus |
---|---|
rakentajat | Rakenna kartta |
tuhoajia | Kartan tuhoaja |
operaattori = | Kopioi kartan elementit toiselle kartalle. |
Iteraattorit
Toiminnot | Kuvaus |
---|---|
alkaa | Palauttaa iteraattorin, joka osoittaa kartan ensimmäiseen elementtiin. |
cbegin | Palauttaa const iteraattorin, joka osoittaa kartan ensimmäiseen elementtiin. |
loppu | Palauttaa menneeseen päähän osoittavan iteraattorin. |
muutama | Palauttaa jatkuvan iteraattorin, joka osoittaa menneisyyteen. |
rbegin | Palauttaa käänteisen iteraattorin, joka osoittaa loppuun. |
tekee | Palauttaa käänteisen iteraattorin, joka osoittaa alkuun. |
crbegin | Palauttaa vakion käänteisen iteraattorin, joka osoittaa loppuun. |
uskoa | Palauttaa vakion käänteisen iteraattorin, joka osoittaa alkuun. |
Kapasiteetti
Toiminnot | Kuvaus |
---|---|
tyhjä | Palauttaa tosi, jos kartta on tyhjä. |
koko | Palauttaa kartan elementtien määrän. |
max_size | Palauttaa kartan enimmäiskoon. |
Elementtien käyttöoikeus
Toiminnot | Kuvaus |
---|---|
operaattori[] | Hae elementti annetulla avaimella. |
klo | Hae elementti annetulla avaimella. |
Muokkaimet
Toiminnot | Kuvaus |
---|---|
lisää | Lisää elementti karttaan. |
pyyhkiä | Poista elementit kartalta. |
vaihtaa | Vaihda kartan sisältö. |
asia selvä | Poista kaikki kartan elementit. |
sijainti | Rakenna ja lisää uudet elementit karttaan. |
Emplace_hint | Rakenna ja lisää karttaan uusia elementtejä vihjeiden avulla. |
Tarkkailijat
Toiminnot | Kuvaus |
---|---|
key_comp | Palauta kopio avainten vertailuobjektista. |
arvo_komp | Palauta kopio arvovertailuobjektista. |
Toiminnot
Toiminnot | Kuvaus |
---|---|
löytö | Etsi elementti annetulla avaimella. |
Kreivi | Hakee annettua avainta vastaavien elementtien määrän. |
alaraja | Palauttaa iteraattorin alarajaan. |
yläraja | Palauttaa iteraattorin ylärajaan. |
yhtä suuri_alue | Palauttaa elementtien alueen, joka vastaa annettua avainta. |
Alokaattori
Toiminnot | Kuvaus |
---|---|
get_allocator | Palauttaa allokaattoriobjektin, jota käytetään kartan luomiseen. |
Ei-jäsenen ylikuormitetut toiminnot
Toiminnot | Kuvaus |
---|---|
operaattori == | Tarkistaa, ovatko kaksi karttaa samanarvoisia vai eivät. |
operaattori!= | Tarkistaa, ovatko kaksi karttaa samanarvoisia vai eivät. |
operaattori< | Tarkistaa, onko ensimmäinen kartta pienempi kuin muut vai ei. |
operaattori<=< td> | Tarkistaa, onko ensimmäinen kartta pienempi tai yhtä suuri kuin muut vai ei. | =<>
operaattori> | Tarkistaa, onko ensimmäinen kartta suurempi kuin muut vai ei. |
operaattori>= | Tarkistaa, onko ensimmäinen kartta suurempi kuin sama vai ei. |
vaihtaa() | Vaihtaa kahden kartan elementin. |