2011-01-07 8 views
5

क्या मैं QMap :: insertMulti और ​​QMultiMap के बीच का उपयोग करना चाहिए संभाल करने:क्यूमैप :: insertMulti या QMultiMap?

2 -> एबीसी
2 -> डीईएफ़
3 -> GHI
3 -> JKL

क्या फर्क दर्ज है 2 समाधान?

उत्तर

6

Container Classes पढ़ना:

QMap<Key, T> 
This provides a dictionary (associative array) that maps keys of type Key to values of type T. Normally each key is associated with a single value. QMap stores its data in Key order; if order doesn't matter QHash is a faster alternative. 

QMultiMap<Key, T> 
This is a convenience subclass of QMap that provides a nice interface for multi-valued maps, i.e. maps where one key can be associated with multiple values. 

यह दोनों काम कर सकते हैं की तरह लग रहा है। इस दस्तावेज़ में Algorithmic Complexity अनुभाग भी है जहां आप देख सकते हैं कि दोनों वर्गों में एक ही जटिलता है।

मैं QMultiMap चुनने के लिए केवल उसी दस्तावेज़ के साथ कई मूल्य रखने के लिए बेहतर दस्तावेज़ को चुनने के लिए चुनूंगा।

4

दोनों इस उद्देश्य को पूरा कर सकते हैं। QMultiMap वास्तव में QMap का उप-वर्ग है।

आप एकल कुंजी के लिए एक से अधिक मान के लिए तैयार हैं, तो आप उपयोग कर सकते हैं: QMap: डालने उपयोग insertMulti QMultiMap के लिए: उपयोग सम्मिलित

आप एकल कुंजी के लिए एक मूल्य के लिए तैयार हैं, तो सम्मिलित करने के लिए, आप इसका उपयोग कर सकते हैं: क्यूएपी: उपयोग सम्मिलित करने के लिए QMultiMap: उपयोग को सम्मिलित करने के लिए

आप देख सकते हैं कि दोनों दोनों उद्देश्य दोनों सर्वर कर सकते हैं। लेकिन, प्रत्येक के पास अद्वितीय डिफ़ॉल्ट व्यवहार होता है जो इसके नाम से मेल खाता है। इसके अलावा, प्रत्येक में कुछ विधियां या ऑपरेटर होते हैं जो एकल/बहु के लिए सुविधाजनक होते हैं।

आपकी आवश्यकता के आधार पर प्रकार चुनना बेहतर है। यह एक अच्छा अभ्यास है। उदाहरण के लिए, यदि आप सिंगल कुंजी एकाधिक मानों को संग्रहीत करने के लिए क्यूमैप का उपयोग करते हैं, तो आपके क्लास सदस्यों के माध्यम से जाने वाले कुछ अन्य व्यक्ति को यह इंप्रेशन मिल सकता है कि आप एकल कुंजी मान जोड़े (डेटा प्रकार से) सहेजने के इच्छुक हैं, इसी तरह, यदि आप उपयोग करते हैं QMultiMap, परिभाषा पढ़ने वाले किसी भी व्यक्ति को यह विचार मिल सकता है कि डेटा के समान कुंजी के लिए एकाधिक मान होंगे।

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