std::unordered_set'te std::pair Kullanımı

Bazı durumlarda, std::pair'lerden oluşan std::unordered_set veya std::unordered_map kullanmak isteyebilirsiniz.


Ancak, std::pair öntanımlı olarak hash'lenebilir değildir, bu nedenle aşağıdaki kod parçacığı çalışmayacaktır:


İnternette bir pairhash sınıfı tanımlamak ve std::unordered_set veya std::unordered_map'e şablon parametresi olarak bu hash fonksiyonunu vermek önerilerine denk gelebilirsiniz.

Bu kötü bir fikir değildir. Aslında başkalarınca da kullanılacak bir kütüphane yazıyorsanız muhtemelen bunu yapmalısınız. Ama bazı durumlar için daha iyisi yapılabilir...

Yukarıdaki kod parçacığını değiştirmeye gerek kalmadan çalışmasını sağlamak için kodumuza aşağıdaki gibi bir ekleme yapmamız yeterlidir:


Bu, epey sade bir kod ortaya çıkarmamızı sağlar:


Ancak, bunu yeniden kullanılabilecek bir kütüphanede yapmaktan kaçınmak iyi olabilir, çünkü std::pair için bir hash işlevi tanımlamak için habersizce benzer bir hile yapan olursa kod çakışmasına neden olabilir. Ayrıca yeni bir C++ standardı std::pair için hash fonksiyonu sunmaya başlarsa da sorun olacaktır.

Tüm bunlara rağmen, bu yazıda bahsedilen kullanım programlama yarışmaları veya ödevlerde işinize yarayacaktır. En azından benim yaradı :)

Kaynak
Ek Okuma

Yorumlar

Bu blogdaki popüler yayınlar

Mızıka Tabları Nasıl Okunur

Muhtar Kellesi

conio.h