C++'da harita üzerinde yineleme yapmanın birden çok yolu vardır. C++'ın daha yeni sürümleriyle, C++'da harita üzerinde yineleme yapmanın daha gelişmiş yolları vardır.
Her birinin üzerinden geçelim.
stp::map ile for döngüsü kullanma
|_+_| adlı bir harita oluşturduk. ve buna anahtar/değer çiftleri eklendi.
<için>
#Dahil etmek
#Dahil etmek
#Dahil etmek
#Dahil etmek
#Dahil etmek
kullanarak ad alanısaat;
intana() {
// Bir haritayı başlat
harita>'Hindistan','Deli'));
ülkeSermaye Haritası.sokmak(çift<sicim, sicim>('Nepal','Katmandu'));
ülkeSermaye Haritası.sokmak(çift<sicim, sicim>('Çin','Pekin'));
ülkeSermaye Haritası.sokmak(çift<sicim, sicim>('Fransa','Paris'));
// Döngü için yineleyici kullanarak yinele
için (Otoitr=ülkeSermaye Haritası.başlamak();itr!=ülkeSermaye Haritası.son();itr++)
{
saat::maliyet <<itr->ilk// Erişim anahtarı
<< ':'
<<itr->ikinci// Erişim değeri
<<saat::son;
}
dönüş 0;
}
</için>
Çıktı:
<için>
Çin:Pekin
Fransa:Paris
Hindistan:Delhi
Nepal:Katmandu
</için>
Gördüğünüz gibi, for döngüsünü kullanarak country:capital(key:value) yazdırdık.
Dikkat ederseniz, |_+_| okunabilirlik nedeniyle harita yineleyici için tür belirteci. |_+_| kullanabilirsiniz açıkçası da.
Not: Çıktıyı görürseniz, artan düzende tuşlara göre sıralanır. Bunun nedeni, std::map'in sağlanan Karşılaştırıcı (sürüm C++11 ve sonrası) ile sıralanmış bir ilişkisel kapsayıcı olmasıdır. Herhangi bir karşılaştırıcı sağlamadığımız için, C++ dize için varsayılan Karşılaştırıcıyı kullandı.
stp::map ile while döngüsünü kullanma
For döngüsü yerine while döngüsünü de kullanabiliriz.
<için>
#Dahil etmek
#Dahil etmek
#Dahil etmek
#include >
kullanarak ad alanısaat;
intana() {
// Bir haritayı başlat
harita<sicim, sicim>ülkeSermayeHarita;
// Haritaya farklı elemanlar ekle
ülkeSermaye Haritası.sokmak(çift<sicim, sicim>('Hindistan','Deli'));
ülkeSermaye Haritası.sokmak(çift<sicim, sicim>('Nepal','Katmandu'));
ülkeSermaye Haritası.sokmak(çift<sicim, sicim>('Çin','Pekin'));
ülkeSermaye Haritası.sokmak(çift<sicim, sicim>('Fransa','Paris'));
// Harita için bir yineleyici oluştur ve start ile başlat
Otoitr=ülkeSermaye Haritası.başlamak();
// while döngüsünde yineleyici kullanarak yineleme
süre (itr!=ülkeSermaye Haritası.son())
{
saat::maliyet <<itr->ilk// Erişim anahtarı
<< ':'
<<itr->ikinci// Erişim değeri
<<saat::son;
itr++;
}
dönüş 0;
}
</için>
Çıktı:
<için>
Çin:Pekin
Fransa:Paris
Hindistan:Delhi
Nepal:Katmandu
</için>
Döngü tabanlı Aralık kullanma (C++11 sürümünden itibaren)
C++11 sürümünü kullanıyorsanız, bu, C++'da harita üzerinde yineleme yapmanın en zarif yoludur. Geleneksel kübik döngülerden kaçınabilir ve bunun yerine bunu kullanabilirsiniz.
<için>#Dahil etmek
#Dahil etmek
#Dahil etmek
kullanarak ad alanısaat;
intana() {
// Bir haritayı başlat
harita<sicim, sicim>ülkeSermayeHarita;
// Haritaya farklı elemanlar ekle
ülkeSermaye Haritası.sokmak(çift<sicim, sicim>('Hindistan','Deli'));
ülkeSermaye Haritası.sokmak(çift<sicim, sicim>('Nepal','Katmandu'));
ülkeSermaye Haritası.sokmak(çift<sicim, sicim>('Çin','Pekin'));
ülkeSermaye Haritası.sokmak(çift<sicim, sicim>('Fransa','Paris'));
// Döngü için yineleyici kullanarak yinele
için (const Oto &o:ülkeSermayeHarita) {
maliyet <<o.ilk << ':' <<o.ikinci<<' ';
}
dönüş 0;
}
</için>
Çıktı:
Çin:Pekin
Fransa:Paris
Hindistan:Delhi
Nepal:Katmandu
Anahtar/değer çiftleriyle aralık tabanlı for döngüsü kullanma (C++17 sürümünden itibaren)
Bu sürüm c++17'den itibaren desteklenir ve harita üzerinde yineleme için daha esnek bir yol sağlar. Daha da okunabilir bir çözüm sağlayan haritadaki anahtar/değer çiftlerine açıkça erişebilirsiniz.
<için>#Dahil etmek
#Dahil etmek
#Dahil etmek
kullanarak ad alanısaat;
intana() {
// Bir haritayı başlat
harita<sicim, sicim>ülkeSermayeHarita;
// Haritaya farklı elemanlar ekle
ülkeSermaye Haritası.sokmak(çift<sicim, sicim>('Hindistan','Deli'));
ülkeSermaye Haritası.sokmak(çift<sicim, sicim>('Nepal','Katmandu'));
ülkeSermaye Haritası.sokmak(çift<sicim, sicim>('Çin','Pekin'));
ülkeSermaye Haritası.sokmak(çift<sicim, sicim>('Fransa','Paris'));
// Döngü için yineleyici kullanarak yinele
için (const Oto& [anahtar, değer] :ülkeSermayeHarita) {
maliyet <<anahtar<< ':' <<değer<< ' ';
}
dönüş 0;
}
</için>
Çıktı:
Çin:Pekin
Fransa:Paris
Hindistan:Delhi
Nepal:Katmandu
Bu tamamen C++'da harita üzerinde nasıl yineleme yapılacağıyla ilgili. Mutlu kodlama!