Kaardil C++

Kaardil C



C++ STL teek pakub meile kaardiklassi. Kaarte peetakse assotsiatiivseteks konteineriteks, mis säilitavad objekte järjestatud võtmeväärtuste ja kaardistatud väärtuste paaris. Kunagi ei saa olla kahte sama võtmeväärtusega vastendatud väärtust. Kaardiklass pakub palju funktsioone, kuid siin arutame neid map.at() funktsiooni. Võtme väärtusega vastendatud element edastatakse funktsiooni parameetrina, millele viidatakse kasutades map.at() funktsiooni. Kui proovime jõuda elemendini, mis ei ole konteineri vahemikus, map.at() funktsioon hindab konteineri vahemikku ja teeb erandi.

Funktsiooni map.at() süntaks

Funktsiooni map.at() rakendamiseks C++-s peame järgima allolevat süntaksit.







Map_variable.at ( võti / väärtuspaar )



Oleme kasutanud kaardiobjekti, mille nimi on 'Map_variable' koos at () funktsiooni. See tagastab elemendi, millele on otse viidatud, ja osutab määratud võtmeväärtusele. Andmevõtmekaart sõltub enamasti kaardi levialast. Kui see pole nii, on võimalik, et täitmise ajal tagastatakse erand või viga, mis tähendab, et väärtus on väljaspool määratletud vahemikku. Nüüd kasutame seda süntaksit C++ koodides, et näidata, et see töötab.



Näide 1: Funktsiooni map.at() kasutamine

Programmi rakendatakse funktsiooni map.at demonstreerimiseks. Oleme linkinud at () funktsiooniga kaart () funktsioon, mis võtab mõned sisendväärtused ja näitab selle funktsionaalsust. Selleks oleme täitnud programmi päise sektsiooni, importides kaardimooduli teise c++ jaoks vajaliku mooduliga. Seejärel oleme helistanud peamine () funktsioon kaardideklaratsiooni jaoks kaardiklassist. Kaardi objektil on silt 'MyMap'. Koostame kaartide loendi, andes kaardi võtme ja väärtuse.





Pärast seda kutsusime esile map.at() funktsioon, mis vastendab määratud stringi täisarvuks. Seejärel printisime tulemused välja map.at() funktsioon for tsüklist. Silmus for kasutab märksõna viidet 'auto'. Automaatne märksõna näitab, et initsialiseerija eemaldab automaatselt deklareeritavast muutuja tüübi. Cout-lause prindib paarid selles järjekorras, nagu on tagastatud map.at() funktsiooni.

#include

#include

#include


int main ( )

std: :map < std::string,int > Minu kaart = {

{ 'õun', 0 } ,

{ 'viinamarjad' , 0 } ,

{ 'mangod' , 0 } }

MyMap.at ( 'õun' ) = 5 ;

MyMap.at ( 'viinamarjad' ) = 10 ;

MyMap.at ( 'mangod' ) = 6 ;

jaoks ( auto & m: MyMap ) {

std::cout << m.esiteks << ':' << m.sekund << '\n' ; }

< tugev > tagasi 0 ;

}



Nüüd on meil tulemused ülaltoodud programmist, mis rakendab map.at() funktsiooni. Kõik määratud täisarvud, mis on vahemikus, kuvatakse iga stringi kõrval.

Näide 2: Funktsiooni map.at() kasutamine vahemikuvälise erandi jaoks

Oleme näiteprogrammi kaudu arutanud rakenduse kasutamist map.at funktsioon C++ keeles. Nüüd oleme rakendanud teise map.at programmis. Kuid seekord tagastab see väärtuse, mis on esitatud kaardil, ja ka erandi out_of_range, kui võtit pole määratud. Kuna me peame kasutama map.at funktsiooni, seega oleme lisanud päisesse kaardimooduli. Seejärel oleme määratlenud põhifunktsiooni, kus parameetrina edastatakse tühimik.

Põhifunktsiooni sees oleme initsialiseerinud loendikonstruktori, luues kaardiobjektiks 'm1'. Kaardiloendis on erinevad võtmete jadad ja täisarvud nende vastu. Seejärel printisime võtme 'i', viies selle läbi map.at funktsiooni. Oleme kasutanud try-catch plokki. Prooviplokis oleme esitanud olematuse võtme map.at funktsiooni. Kuna võti on vahemikust väljas, siis prooviplokk viskab vea.

#include

#include

kasutades nimeruumi std;

int main ( tühine ) {


kaart < char, int > m1 = {

{ 'ma' , 1 } ,

{ 'mina' , kaks } ,

{ 'n' , 3 } ,

{ 'sisse' , 4 } ,

{ 'x' , 5 } ,

} ;



cout << 'kaardi võtme väärtus m1['i'] = ' << m1.at ( 'mina' ) << endl;



proovi {

m1.at ( 'Y' ) ;

} püüda ( const out_of_range & ja ) {

cerr << 'Viga aadressil' << e.mis ( ) << endl;

}



tagasi 0 ;

}

Väljundi ekraanipildist saame visualiseerida, et map.at() funktsioon tagastab ainult kaardil olevad võtmed. Levikust väljas olevad klahvid tekitavad vea, kuna tõrge kuvatakse siis, kui edastasime klahvi „y”. map.at funktsiooni.

Näide 3: Funktsiooni map.at() kasutamine elementidele juurdepääsuks

Elemendile pääseb juurde funktsiooni map.at määratud numbrite elemendi abil. Rakendame seda programmi ülaltoodud avalduse täitmiseks. Oleme määratlenud kaardimooduli kõigepealt päise jaotises, kuna see on vajalik juurdepääsuks map.at funktsiooni. Seejärel on meil põhifunktsioon, kus kaardiklass initsialiseeris kaardiobjekti nimega 'Map'. Selle 'Map' objektiga oleme genereerinud stringide võtmed ja määranud neile numbri väärtuse. Pärast seda helistasime map.at funktsioon koos lausega cout ja andis sisendiks klahvi 'Näide'.

#include

#include

#include

kasutades nimeruumi std;

int main ( )

{

kaart < string, int > Kaart;

Kaart [ 'Minu' ] = 1 ;

Kaart [ 'c++' ] = kaks ;

Kaart [ 'Kaart' ] = 3 ;

Kaart [ 'Näide' ] = 4 ;

cout << Map.at ( 'Näide' ) ;

tagasi 0 ;

}

Numbrielement tagastatakse failis määratud võtme vastu map.at funktsiooni. Tulemus annab väärtuse '4', kuna see number on määratud kaardi võtmeelemendile 'Näide'.

Näide 4: Funktsiooni map.at() kasutamine elementide muutmiseks

Vaatleme lihtsat näidet võtmeväärtusega seotud väärtuse muutmiseks. Oleme koostanud kaardi nimekirja, helistades kaardiklassi ja luues objekti “M1”. Oleme määranud stringi väärtuse igale kaardiklahvile. Seejärel peame kasutama map.at funktsiooni. Aastal map.at funktsiooni, oleme kasutanud määratud võtmeid ja määranud nendele klahvidele uued stringiväärtused. Nüüd muudetakse neid väärtusi eelmisega. For tsükli abil oleme itereerinud iga elemendi kaardil ja kuvanud selle väljundina.

#include

#include

#include


kasutades nimeruumi std;


int main ( )

{

kaart < int,string > M1 = {

{ 10 , 'c++' } ,

{ kakskümmend , 'java' } ,

{ 30 , 'püüton' } ,

{ 40 , 'terav' } ,

{ viiskümmend , 'AVATUD' } } ;




M1.at ( kakskümmend ) = 'Tensorflow' ;

M1.at ( 30 ) = 'Linux' ;

M1.at ( viiskümmend ) = 'Scala' ;

cout << ' \n Elemendid:' << endl;

jaoks ( auto & x: M1 ) {

cout << x.esimene << ':' << x.sekund << '\n' ;

}


tagasi 0 ;

}

Pange tähele, et väljundina saadud väärtused on muutnud failis äsja määratud stringiväärtusi map.at funktsiooni. Värskendatud väärtused on näidatud alloleval pildil.

Järeldus

Artikkel käsitleb funktsiooni map.at. Oleme pakkunud funktsiooni map.at() funktsionaalsust selle süntaksi kaudu ja näide on realiseeritud C++ kompilaatoriga. Funktsioon map.at() on väga kasulik, kuna see võimaldab elementide ligipääsetavust ja tagastab selge erandi või vea, mis kirjeldab olukorda, mis tekkis meetodi kutsumisel. Lisaks saame funktsiooni map.at kaudu määrata eksistentsivõtmele uusi väärtusi.