2012-07-12 10 views
6

Mam multimap<key_type,value_type> i chciałbym wiedzieć, czy dany klucz pojawia się na mapie w tym samym czasie.Jak określić, czy dany klucz jest unikalny w multimapie?

wiem, że mogę zadzwonić multimap.equal_range(key) znaleźć iterator do początku i końca zakresu zawierającego key, ale chciałbym wiedzieć, czy istnieje tylko jeden element pomiędzy range.first i range.second.

Czy istnieje lepszy sposób niż zwiększanie wartości range.first, aby sprawdzić, czy jest równa range.end? Ponieważ kod multimap::iterator jest dwukierunkowy, cofanie inkrementacji nie jest wielką sprawą, ale wydaje się to niechlujne.

Odpowiedz

7

Czy możesz sprawdzić, czy std::multimap::count(key) == 1?

+0

Ah, nie widziałem przeciążenia "count". Idealny. Potwierdzę, że działa jutro i zaznacz jako odpowiedział. –

+0

@LarryOsterman Czy "klucz" musi znajdować się w cudzysłowach? Podobało mi się to bez cytatów, ponieważ 'klucz' może być zmienną. @Nawaz Dzięki za lepszy odnośnik do strony referencyjnej –

+0

Nie, to nie - to było moje zło, w moim przypadku klucz jest ciągiem i rozstawiłem. Cofam. –

Powiązane problemy