मुझे आश्चर्य है कि सी ++ 11 में unordered_map के लिए लैम्ब्डा फ़ंक्शन का कस्टम हैश फ़ंक्शन के रूप में उपयोग करना संभव है? यदि हां, तो वाक्यविन्यास क्या है?unordered_map में हैश फ़ंक्शन के रूप में लैम्ब्डा फ़ंक्शन का उपयोग कैसे करें?
28
A
उत्तर
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);
}
आप के बाद से लैम्ब्डा प्रकार constructible डिफ़ॉल्ट नहीं कर रहे हैं, unordered_map
निर्माता को लैम्ब्डा वस्तु पारित करने के लिए की जरूरत है।
@mmocny टिप्पणी में सुझाव दिया गया है, यह भी संभव प्रकार कटौती सक्षम करने के लिए कर समारोह को परिभाषित करने के लिए क्या तुम सच में decltype
से छुटकारा पाने के लिए करना चाहते हैं:
#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);
});
}
संबंधित मुद्दे
- 1. unordered_map - हैश फ़ंक्शन का कोई प्रभाव नहीं है
- 2. पायथन में लैम्बडा फ़ंक्शन के लिए हैश
- 3. लैम्ब्डा फ़ंक्शन
- 4. टेम्पलेट फ़ंक्शन पैरामीटर के रूप में लैम्ब्डा पास करें
- 5. लैम्ब्डा फ़ंक्शन का सेटटर?
- 6. हैश फ़ंक्शन कुंजी के रूप में तारों का ऐरे?
- 7. टेम्पलेट पैरामीटर के रूप में स्थिर सदस्य फ़ंक्शन में फ़ंक्शन पॉइंटर का उपयोग कैसे करें?
- 8. फ़ंक्शन हैश से फिस हैश स्लाइस फ़ंक्शन
- 9. jQuery - फ़ंक्शन नाम के रूप में चर का उपयोग करें
- 10. सी ++ std :: unordered_map में उपयोग किया गया डिफ़ॉल्ट हैश फ़ंक्शन क्या है?
- 11. कैप्चर के साथ फ़ंक्शन में लैम्ब्डा कैसे पास करें?
- 12. फ़ंक्शन के रूप में "यह" का उपयोग करें?
- 13. सी # लैम्ब्डा अभिव्यक्ति फ़ंक्शन तर्क के रूप में
- 14. लैम्बडा में लैम्ब्डा फ़ंक्शन में "यह" कैप्चर कैसे करें?
- 15. सी में हैश फ़ंक्शन कैसे लिखें?
- 16. सी ++ 11 लैम्ब्डा पैरामीटर के रूप में पासिंग फ़ंक्शन
- 17. हैश फ़ंक्शन मानों के वितरण में सुधार
- 18. हैश टेबल/हैश फ़ंक्शन का निर्माण
- 19. टेम्पलेट पैरामीटर के रूप में सामान्य फ़ंक्शन पॉइंटर का उपयोग कैसे करें?
- 20. TWIG में PHP फ़ंक्शन का उपयोग करें?
- 21. preg_replace() फ़ंक्शन के अंदर substr() फ़ंक्शन का उपयोग कैसे करें?
- 22. एडब्ल्यूएस लैम्ब्डा फ़ंक्शन
- 23. लैम्ब्डा फ़ंक्शन का अनुमानित प्रतिनिधित्व
- 24. लुआ में पैरामीटर के रूप में फ़ंक्शन कैसे पास करें?
- 25. जावास्क्रिप्ट/नोडजेस में एडब्ल्यूएस क्षेत्र कैसे प्राप्त करें लैम्ब्डा फ़ंक्शन:
- 26. एकाधिक अगर लैम्ब्डा फ़ंक्शन
- 27. फ़ंक्शन ऑब्जेक्ट के बजाय लैम्ब्डा का उपयोग करना, खराब प्रदर्शन
- 28. एक लैम्ब्डा फ़ंक्शन
- 29. जावास्क्रिप्ट लैम्ब्डा फ़ंक्शन
- 30. चेनिंग लैम्ब्डा फ़ंक्शन
तुम क्या करने की कोशिश की है? लैम्ब्डा को पास करने की आवश्यकता है, या एक वैरिएबल है जो लैम्ब्डा – Ajay
@Ajay रखता है, मैंने कोशिश की, लेकिन कुछ अजीब त्रुटियां हमेशा होती हैं ... अब मुझे पता है कि यह कैसे करें ... – HanXu