2016-04-07 26 views
1

Ben (öncelik sırasına göre) bu gibi bazı değerlerin bir önceliklendirme, temsil benim multimap<int, std::string> map vardır: belirlemek için, "elementx" bir değer dizesi verilenÇoklu haritada, belirli bir değere ait anahtar nasıl alınır?

<1, "element1"> // max priority 
<1, "element2"> 
<1, "element3"> 
<2, "element4"> 
<3, "element5"> 
<3, "element6"> // min priority 

bir yolu var mı ne anahtar için (böylece öncelik) ilişkili?

+0

verilen değer – juanchopanza

+0

Kodumun nasıl ayarlandığı hakkında, bu olmamalıdır: her öğenin bir ve bir tek önceliği vardır. – elmazzun

+0

O zaman neden sadece “std :: map” kullanmıyorsunuz? – ArchbishopOfBanterbury

cevap

0

You Ya haritanızı inşa ediyoruz (hızlı arama yapmak için) ya da sadece bir yineleyici haritanızdaki geçmesi ters harita <string, int> map olması gerekir:

bir için birden fazla anahtar var ne olur
for (auto it:map) 
{ 
    if (it.second == "elementx") 
    { 
     std::cout << it.first << std:endl; 
     break; 
    } 
} 
+0

Sadece 'auto it: map' kopyalarını değere göre hatırla ... Sadece 'auto & it: map' dizisini kopyalamaktan kaçınmak istersiniz ... – kfsone

0

std::map değerini arayamazsınız.

Tek seçenek, tüm harita üzerinde yineleme yapmak ve haritadaki her öğenin değerlerini "elementx" ile karşılaştırmaktır. Anahtarları std::set gibi uygun bir kapsayıcıda toplayabilirsiniz.

İlgili konular