मैं बाहरी नेटवर्किंग लाइब्रेरी का उपयोग कर रहा हूं जो खोले सॉकेट का प्रतिनिधित्व करने वाले कुछ जादू संरचनाओं को लौटाता है और दस्तावेज़ कहते हैं कि उन्हें एसटीएल कंटेनर में डालने पर, उन्हें std::owner_less
का उपयोग करके तुलना की जानी चाहिए।सी ++ 11 unordered_set std :: owner_less-like हैशिंग
std::map<MagicStructure, std::shared_ptr<Client>, std::owner_less<MagicStructure>> sockets;
हालांकि मैं इसके बजाय unordered_map
का उपयोग करना चाहता हूं। मैं यह कैसे कर सकता हूं? std::owner_less
एक तुलनित्र है और यह हैश मानचित्र के लिए बेकार है। स्रोत कोड में खुदाई, MagicStructure
std::shared_ptr
के लिए एक टाइपपीफ प्रतीत होता है।
इस मानक से एक वास्तविक चूक हो सकती है। हमें 'owner_equal' और 'owner_hash' जैसी कुछ चाहिए; उत्तरार्द्ध नियंत्रण ब्लॉक के पते का हैश हो सकता है। –
आप स्रोत कोड देख सकते हैं और देख सकते हैं कि वे एक डिलीटर सेट करते हैं, और यदि ऐसा है तो। फिर 'get_deleter' आज़माएं। संभावित रूप से 'डिलीटर' को "मालिक" के लिए प्रॉक्सी के रूप में उपयोग किया जा सकता है। – Yakk