c++ - What _can_ I use as std::map keys? -


मेरे पास है:

 struct coord {int row, col; बूल ऑपरेटर & lt; (कॉन्स्ट कॉर्ड एंड अन्य) const {वापसी पंक्ति & lt; Other.row && col & lt; अन्य.col; }}; 

मैं एक मानचित्र & lt; Coord, नोड * & gt; बनाने की कोशिश कर रहा हूं, जहां आप नोड * Coord को देख सकते हैं

समस्या यह है, इसमें कीड़े हैं नक्शा & lt; Coord, नोड * & gt; द्वारा Coord के लुकअप में गलत लोगों को वापस कर रहे हैं।

मुझे पता लगाना मुश्किल है कि यह क्या है उचित है या नहीं।

विकिपीडिया कहते हैं,। क्या मैंने यह गलत किया है? क्या यह काम करने का कोई तरीका है, या क्या मानचित्र के लिए चाबी सरल मूल्यों को "सख्ती से आदेश दिया जा सकता है" हो सकता है?

असल में सवाल है कि कस्टम struct मेरे स्टड :: मैप के लिए एक कुंजी के रूप में काम करने के लिए?

जी हाँ आप बहुत अच्छी तरह से समस्या कर सकते हैं सख्त-कमजोर आदेश के साथ बाधाओं की तरह काम नहीं कर रहे हैं जैसे आप उम्मीद करेंगे विचार करें:

  बूल ऑपरेटर & lt; (कॉन्स्ट कॉरोड और अन्य) कॉन्स्ट {रिटर्न पंक्ति & lt; अन्य। एंड एंड amp; कर्नल & lt; अन्य.col; }  

obj1 (this) पंक्ति: 2 col: 3

obj2 पंक्ति: 3 col: 2

obj1 & lt; obj2? => झूठे

ठीक है ठीक है:

obj2 & lt; obj1? => गलत

एकमात्र निष्कर्ष यह है कि उन्हें समान होना चाहिए (आपके & lt; ऑपरेटर के आधार पर) चूंकि यह एक नक्शा है, और चाबियाँ अनूठी हैं, दोनों चाबियाँ उसी स्थान पर समतल हैं यह व्यवहार हो सकता है कि आप क्या उम्मीद न करें, लेकिन ऐसा लगता है कि यह शायद नहीं है।

आपको क्या चाहिए / पंक्ति / कॉल के बीच प्राथमिकता बनाना है ताकि & lt; वास्तव में काम करता है जैसे आप उम्मीद करते हैं:

  bool ऑपरेटर & lt; (const coord और अन्य) const {// पहले पंक्ति पर देखो, यदि पंक्ति बराबर है, कॉलम की जांच करें यदि (पंक्ति और एलटी; अन्य.ओ) {वापसी सत्य; } और अगर (पंक्ति == अन्य.रो) {वापसी कर्नल & lt; अन्य.col; }      विवरण झूठा है; }  

Comments

Popular posts from this blog

iphone - How do I make a UIPickerView in a UIActionSheet -

java - Is there an object like a "Set" that can contain only unique string values, but also contain a count on the number of occurrences of the string value? -