logo

C++ karttatoiminto

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&lt;pair"> // map::allocator_type &gt; 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] = &apos;Nikita&apos;; Employees[105] = &apos;John&apos;; Employees[103] = &apos;Dolly&apos;; Employees[104] = &apos;Deep&apos;; Employees[102] = &apos;Aman&apos;; cout &lt;&lt; &apos;Employees[104]=&apos; &lt;&lt; Employees[104] &lt;&lt; endl &lt;&lt; endl; cout &lt;&lt; &apos;Map size: &apos; &lt;&lt; Employees.size() &lt;&lt; endl; cout &lt;&lt; endl &lt;&lt; &apos;Natural Order:&apos; &lt;&lt; endl; for( map::iterator ii=Employees.begin(); ii!=Employees.end(); ++ii) { cout &lt;&lt; (*ii).first &lt;&lt; &apos;: &apos; &lt;&lt; (*ii).second &lt;&lt; endl; } cout &lt;&lt; endl &lt;&lt; &apos;Reverse Order:&apos; &lt;&lt; endl; for( map::reverse_iterator ii=Employees.rbegin(); ii!=Employees.rend(); ++ii) { cout &lt;&lt; (*ii).first &lt;&lt; &apos;: &apos; &lt;&lt; (*ii).second &lt;&lt; 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.