C++ 11'deki unordered_map için özel hash işlevi olarak lambda işlevinin kullanılması mümkün mü acaba? Eğer öyleyse, sözdizimi nedir? lambda tipleri constructible varsayılan olmadığı içinUnordered_map'de hash işlevi olarak lambda işlevi nasıl kullanılır?
28
A
cevap
44
#include<unordered_map>
#include<string>
int main() {
auto my_hash = [](std::string const& foo) {
return std::hash<std::string>()(foo);
};
std::unordered_map<std::string, int, decltype(my_hash)> my_map(10, my_hash);
}
Sen unordered_map
kurucusuna lambda nesneyi geçmesi gerekiyor.
#include<unordered_map>
#include<string>
template<
class Key,
class T,
class Hash = std::hash<Key>
// skipped EqualTo and Allocator for simplicity
>
std::unordered_map<Key, T, Hash> make_unordered_map(
typename std::unordered_map<Key, T, Hash>::size_type bucket_count = 10,
const Hash& hash = Hash()) {
return std::unordered_map<Key, T, Hash>(bucket_count, hash);
}
int main() {
auto my_map = make_unordered_map<std::string, int>(10,
[](std::string const& foo) {
return std::hash<std::string>()(foo);
});
}
İlgili konular
- 1. Lambda işlevi Amazon SQS
- 2. vb lambda MAX işlevi
- 3. DistHaversine işlevi nasıl kullanılır?
- 4. Ko.validation.group işlevi nasıl kullanılır?
- 5. Utilities.sleep() işlevi nasıl kullanılır?
- 6. Python'da dinamik olarak bir lambda işlevi oluşturun
- 7. Python 3.3 hash işlevi, oturumlar
- 8. OpenCV cvProjectPoints2 işlevi nasıl kullanılır?
- 9. imagick'in writeImage() işlevi nasıl kullanılır?
- 10. AWS Lambda: Basit java sınıfından lambda işlevi nasıl çağırılır
- 11. C de getchar işlevi ve putchar işlevi nasıl kullanılır?
- 12. Tavsiye edilen hash işlevi üzerine yazmak için NSObject's hash yöntemi
- 13. Dizeler için Scala hash işlevi nedir?
- 14. python eşleme işlevi (+ lambda) koşullu ifadeler (if)
- 15. Montaj türünden yüklenemiyor (C# Amazon lambda işlevi)
- 16. Python, bir argüman işlevi olarak lambda argümanlarını belirtir
- 17. Lambda işlevi burada neden izinli değil?
- 18. excel makrosu içinde "içerir" işlevi nasıl kullanılır?
- 19. Scala'da bir lambda işlevi var mı?
- 20. DbQuery.Include() işlevi aşırı yüklenme, bir lambda alır?
- 21. Opencv'de erozyon ve dilate işlevi nasıl kullanılır?
- 22. lambda işlevi Python'daki parametreyi kapatmıyor mu? daha
- 23. bir lambda işlevi tanımlayan kodu yazdır
- 24. AWS CloudFormation özel lambda işlevi oluşturulduğunda sıkışmış
- 25. Bir lambda ifadesinde bir işlevi çağırabilir miyim?
- 26. Konsolda neden bir AWS Lambda işlevi oluşturamıyorum?
- 27. Python: pandalar lambda ifadede bir işlevi kullanmak
- 28. Tanımlanmamış değerlerle right_pad işlevi nasıl kullanılır?
- 29. TensorFlow'da doğrusal aktivasyon işlevi nasıl kullanılır?
- 30. Android'de EditText'de onBlur işlevi nasıl kullanılır?
Ne denedi: @mmocny yorumunda önerildiği gibi gerçekten
decltype
kurtulmak istiyorsanız, bu tip kesinti sağlamak için yapmak fonksiyonunu tanımlamak da mümkündür? Sadece lambda, veya bir lambda – Ajay
@Ajay tutan bir değişkeni geçmek gerekiyor, denedim, ama bazı garip hataları her zaman oluşur ... şimdi nasıl yapılacağını biliyorum ... – HanXu