2011-04-06 16 views
13

दो मानों को एक कुंजी में मैप करने का सबसे अच्छा तरीका क्या है?std :: नक्शा एक कुंजी, दो मान

यानी एक मूल्य और बूल वाला आइटम।

का उपयोग कर की कोशिश की:

std::map<std::string, std::pair<std::string, bool> > myMap2 

लेकिन वह सही समाधान की तरह प्रतीत नहीं होता। क्या ऐसा करने के लिए एक और शानदार तरीका है?

+7

'std :: pair <>' ठीक है। आपकी चिंता क्या है? – Keith

उत्तर

7

यह वास्तव में सही समाधान है। आम तौर पर, boost::tuple मानों की संख्या की परवाह किए बिना एक समान अंतरफलक के लिए std::tuple बजाय std::pair उपयोग करने पर विचार (के रूप में स्पष्ट रूप से std::pair दो तक ही सीमित है), या यदि आपके संकलक भी एक std:: या std::tr1:: कार्यान्वयन के साथ जहाज के लिए पुराना है।

+0

यह टुपल है ... धन्यवाद – JonnyCplusplus

+2

या एक स्ट्रक्चर, जब आपका टुपल हाथ से बाहर निकलना शुरू कर देता है ... –

+1

@Steve: ... जब टुपल में दो से अधिक आइटम होते हैं। :) गंभीरता से, tuples अपठनीय कोड को बढ़ावा देते हैं जब उनकी सामग्री को कुछ स्पष्ट तरीके से समरूप रूप से टाइप या संरचित नहीं किया जाता है। कोड जो 'iter-> second.get <6>() 'बुरा है। –

6

या तो std::pair<> का उपयोग करें जैसा आपने किया था, या एक कस्टम स्ट्रक्चर बनाते हैं जिसमें आप स्टोर करना चाहते हैं। मैं बाद में ज्यादातर मामलों में करूँगा, क्योंकि मानों के नाम first और second से अधिक वर्णनात्मक हैं।

1

आम तौर पर, मैं एक साधारण नक्शा वैल्यू संरचना/कक्षा काटता हूं।

संबंधित मुद्दे