Kaardil C ++ on mitu võimalust iteratsiooniks. Uuemate C ++ versioonide puhul on C ++ -is kaardi kordamiseks rohkem arenenud viise.
Käime igaüks ükshaaval läbi.
Kasutamine silmusena koos stp :: kaardiga
Oleme loonud kaardi nimega | _+_ | ja sisestas sellele võtme-väärtuse paarid.
<eest>
#kaasake
#kaasake
#kaasake
#kaasake
#kaasake
kasutades nimeruumtundi;
intpeamine() {
// Kaardi lähtestamine
kaart>'India','Delhi'));
countryCapitalMap.sisestada(paar<string, string>('Nepal','Katmandu'));
countryCapitalMap.sisestada(paar<string, string>('Hiina','Peking'));
countryCapitalMap.sisestada(paar<string, string>('Prantsusmaa','Pariis'));
// Korda, kasutades iteraatorit silmuse jaoks
eest (autoitr=countryCapitalMap.alustada();itr!=countryCapitalMap.lõpp();itr++)
{
tundi::maksma <<itr->esimene// Pääsuklahv
<< ':'
<<itr->teine// Juurdepääsu väärtus
<<tundi::endl;
}
tagasi 0;
}
</eest>
Väljund:
<eest>
Hiina:Peking
Prantsusmaa:Pariis
India:Delhi
Nepal:Katmandu
</eest>
Nagu näete, oleme trükkinud riigi: kapitali (võti: väärtus) silmusena.
Kui märkate, oleme kasutanud | _+_ | loetavuse tõttu kaardi iteraatori tüübispetsiif. Saate kasutada | _+_ | samuti selgesõnaliselt.
Märge: Kui näete väljundit, sorteeritakse see võtmete järgi kasvavas järjekorras. Seda seetõttu, et std :: map on sorteeritud assotsiatsioonikonteiner koos kaasasoleva võrdlusprogrammiga (versioon C ++ 11). Kuna me ei pakkunud võrdlusvahendit, kasutas C ++ stringi jaoks vaikimisi võrdlejat.
Funktsiooni while loop kasutamine koos stp :: mapiga
Võime silmuse asemel kasutada ka while -tsüklit.
<eest>
#kaasake
#kaasake
#kaasake
#kaasake>
kasutades nimeruumtundi;
intpeamine() {
// Kaardi lähtestamine
kaart<string, string>countryCapitalMap;
// Erinevate elementide sisestamine kaardile
countryCapitalMap.sisestada(paar<string, string>('India','Delhi'));
countryCapitalMap.sisestada(paar<string, string>('Nepal','Katmandu'));
countryCapitalMap.sisestada(paar<string, string>('Hiina','Peking'));
countryCapitalMap.sisestada(paar<string, string>('Prantsusmaa','Pariis'));
// Loo kaardile iteraator ja initsialiseeri algus
autoitr=countryCapitalMap.alustada();
// Iterate kasutades iteraatorit in loop
samas (itr!=countryCapitalMap.lõpp())
{
tundi::maksma <<itr->esimene// Pääsuklahv
<< ':'
<<itr->teine// Juurdepääsu väärtus
<<tundi::endl;
itr++;
}
tagasi 0;
}
</eest>
Väljund:
<eest>
Hiina:Peking
Prantsusmaa:Pariis
India:Delhi
Nepal:Katmandu
</eest>
Ahelapõhise vahemiku kasutamine (C ++ 11 versioon alates)
Kui kasutate versiooni C ++ 11, siis on see kõige elegantsem viis C ++ kaardil itereerimiseks. Saate vältida traditsioonilisi kubemesilmuseid ja kasutada seda selle asemel.
<eest>#kaasake
#kaasake
#kaasake
kasutades nimeruumtundi;
intpeamine() {
// Kaardi lähtestamine
kaart<string, string>countryCapitalMap;
// Erinevate elementide sisestamine kaardile
countryCapitalMap.sisestada(paar<string, string>('India','Delhi'));
countryCapitalMap.sisestada(paar<string, string>('Nepal','Katmandu'));
countryCapitalMap.sisestada(paar<string, string>('Hiina','Peking'));
countryCapitalMap.sisestada(paar<string, string>('Prantsusmaa','Pariis'));
// Korda, kasutades iteraatorit silmuse jaoks
eest (const auto &tema:countryCapitalMap) {
maksma <<tema.esimene << ':' <<tema.teine<<' n';
}
tagasi 0;
}
</eest>
Väljund:
Hiina:Peking
Prantsusmaa:Pariis
India:Delhi
Nepal:Katmandu
Vahemikupõhise kasutamine tsüklil võtmeväärtuste paaridega (C ++ 17 versioon alates)
Seda versiooni toetatakse alates c ++ 17 ja see pakub paindlikumat viisi kaardil itereerimiseks. Saate selgesõnaliselt juurde pääseda võtmeväärtuste paarile kaardil, mis pakub veelgi loetavamat lahendust.
<eest>#kaasake
#kaasake
#kaasake
kasutades nimeruumtundi;
intpeamine() {
// Kaardi lähtestamine
kaart<string, string>countryCapitalMap;
// Erinevate elementide sisestamine kaardile
countryCapitalMap.sisestada(paar<string, string>('India','Delhi'));
countryCapitalMap.sisestada(paar<string, string>('Nepal','Katmandu'));
countryCapitalMap.sisestada(paar<string, string>('Hiina','Peking'));
countryCapitalMap.sisestada(paar<string, string>('Prantsusmaa','Pariis'));
// Korda, kasutades iteraatorit silmuse jaoks
eest (const auto& [võti, väärtus] :countryCapitalMap) {
maksma <<võti<< ':' <<väärtus<< ' n';
}
tagasi 0;
}
</eest>
Väljund:
Hiina:Peking
Prantsusmaa:Pariis
India:Delhi
Nepal:Katmandu
See on kõik sellest, kuidas C ++ kaardil üle itereerida. Head kodeerimist!