Ada beberapa cara untuk mengulangi peta di C++. Dengan versi C++ yang lebih baru, ada cara yang lebih canggih untuk beralih pada peta di C++.
Mari kita bahas satu per satu.
Menggunakan for loop dengan stp::map
Kami telah membuat peta bernama |_+_| dan memasukkan pasangan nilai kunci ke dalamnya.
<untuk>
#termasuk
#termasuk
#termasuk
#termasuk
#termasuk
menggunakan ruang namajam;
ke dalamutama() {
// Inisialisasi peta
peta>'India','Delhi'));
countryCapitalPeta.memasukkan(pasangan<tali, tali>('Nepal','Kathmandu'));
countryCapitalPeta.memasukkan(pasangan<tali, tali>('Cina','Beijing'));
countryCapitalPeta.memasukkan(pasangan<tali, tali>('Perancis','Paris'));
// Iterasi menggunakan iterator di for loop
untuk (mobilitr=countryCapitalPeta.mulai();itr!=countryCapitalPeta.akhir();itr++)
{
jam::biaya <<itr->pertama// Kunci akses
<< ':'
<<itr->kedua// Nilai akses
<<jam::akhir;
}
kembali 0;
}
</untuk>
Keluaran:
<untuk>
Cina:Beijing
Perancis:Paris
India:Delhi
Nepal:Kathmandu
</untuk>
Seperti yang Anda lihat, kami telah mencetak country:capital(key:value) menggunakan for loop.
Jika Anda perhatikan, kami telah menggunakan |_+_| type specifier untuk peta iterator karena keterbacaan. Anda dapat menggunakan |_+_| secara eksplisit juga.
Catatan: Jika Anda melihat hasilnya, itu diurutkan berdasarkan kunci dalam urutan menaik. Ini karena std::map adalah wadah asosiatif yang diurutkan dengan Pembanding yang disediakan (versi C++ 11 dan seterusnya). Karena kami tidak menyediakan pembanding apa pun, maka C++ telah menggunakan Pembanding default untuk string.
Menggunakan while loop dengan stp::map
Kita juga dapat menggunakan perulangan while sebagai ganti perulangan for.
<untuk>
#termasuk
#termasuk
#termasuk
#sertakan >
menggunakan ruang namajam;
ke dalamutama() {
// Inisialisasi peta
peta<tali, tali>negaraIbukotaPeta;
// Menyisipkan elemen yang berbeda di peta
countryCapitalPeta.memasukkan(pasangan<tali, tali>('India','Delhi'));
countryCapitalPeta.memasukkan(pasangan<tali, tali>('Nepal','Kathmandu'));
countryCapitalPeta.memasukkan(pasangan<tali, tali>('Cina','Beijing'));
countryCapitalPeta.memasukkan(pasangan<tali, tali>('Perancis','Paris'));
// Buat iterator untuk peta dan Inisialisasi dengan awal
mobilitr=countryCapitalPeta.mulai();
// Iterasi menggunakan iterator di while loop
ketika (itr!=countryCapitalPeta.akhir())
{
jam::biaya <<itr->pertama// Kunci akses
<< ':'
<<itr->kedua// Nilai akses
<<jam::akhir;
itr++;
}
kembali 0;
}
</untuk>
Keluaran:
<untuk>
Cina:Beijing
Perancis:Paris
India:Delhi
Nepal:Kathmandu
</untuk>
Menggunakan Rentang berbasis untuk loop (versi C++ 11 dan seterusnya)
Jika Anda menggunakan versi C++ 11, maka ini adalah cara paling elegan untuk beralih di atas peta di C++. Anda dapat menghindari loop cubersome tradisional dan menggunakan ini sebagai gantinya.
<untuk>#termasuk
#termasuk
#termasuk
menggunakan ruang namajam;
ke dalamutama() {
// Inisialisasi peta
peta<tali, tali>negaraIbukotaPeta;
// Menyisipkan elemen yang berbeda di peta
countryCapitalPeta.memasukkan(pasangan<tali, tali>('India','Delhi'));
countryCapitalPeta.memasukkan(pasangan<tali, tali>('Nepal','Kathmandu'));
countryCapitalPeta.memasukkan(pasangan<tali, tali>('Cina','Beijing'));
countryCapitalPeta.memasukkan(pasangan<tali, tali>('Perancis','Paris'));
// Iterasi menggunakan iterator di for loop
untuk (konstan mobil &dia:negaraIbukotaPeta) {
biaya <<dia.pertama << ':' <<dia.kedua<<' ';
}
kembali 0;
}
</untuk>
Keluaran:
Cina:Beijing
Perancis:Paris
India:Delhi
Nepal:Kathmandu
Menggunakan loop for berbasis rentang dengan pasangan nilai kunci (versi C++ 17 dan seterusnya)
Versi ini didukung dari c++17 dan seterusnya dan menyediakan cara yang lebih fleksibel untuk iterasi di atas peta. Anda dapat secara eksplisit mengakses pasangan nilai kunci di peta yang memberikan solusi yang lebih mudah dibaca.
<untuk>#termasuk
#termasuk
#termasuk
menggunakan ruang namajam;
ke dalamutama() {
// Inisialisasi peta
peta<tali, tali>negaraIbukotaPeta;
// Menyisipkan elemen yang berbeda di peta
countryCapitalPeta.memasukkan(pasangan<tali, tali>('India','Delhi'));
countryCapitalPeta.memasukkan(pasangan<tali, tali>('Nepal','Kathmandu'));
countryCapitalPeta.memasukkan(pasangan<tali, tali>('Cina','Beijing'));
countryCapitalPeta.memasukkan(pasangan<tali, tali>('Perancis','Paris'));
// Iterasi menggunakan iterator di for loop
untuk (konstan mobil& [kunci, nilai] :negaraIbukotaPeta) {
biaya <<kunci<< ':' <<nilai<< ' ';
}
kembali 0;
}
</untuk>
Keluaran:
Cina:Beijing
Perancis:Paris
India:Delhi
Nepal:Kathmandu
Itu semua tentang cara mengulangi peta di C++. Selamat mengkode!