आप मान लिया जाये कि सी ++ 11 या बाद में उपयोग कर रहे हैं, सबसे अच्छा तरीका शायद है:
object * myObject = // get an object somehow
myMap.emplace({1,2}, myObject);
मानचित्रों के लिए, emplace
कि कुंजी और अलग अलग रूप में मूल्य लेता insert
का एक संस्करण के रूप में सोचा जा सकता है तर्क (यह वास्तव में तर्कों का कोई संयोजन ले सकता है कि संबंधित pair
प्रकार के निर्माता ले सकते हैं)। वाक्य रचनात्मक रूप से क्लीनर होने के अलावा, यह make_pair
से भी अधिक कुशल है, क्योंकि make_pair
आमतौर पर एक आउटपुट उत्पन्न करेगा जिसका प्रकार कंटेनर के value_type
से मेल नहीं खाता है, और इसलिए यह एक अनावश्यक प्रकार रूपांतरण होता है।
मैं इस है, जो भी केवल सी ++ 11 या बाद में काम करता है की सिफारिश करने के लिए इस्तेमाल:
object * myObject = // get an object somehow
myMap.insert({{1,2}, myObject});
यह emplace
का थोड़ा आश्चर्य की बात दूर रहता है, लेकिन यह पूर्व में यदि कुंजी या मान काम नहीं किया प्रकार केवल चाल हैं (उदाहरण के लिए unique_ptr
)। यह मानक में तय किया गया है, लेकिन आपके मानक लाइब्रेरी कार्यान्वयन ने अभी तक ठीक नहीं किया हो सकता है। यह सैद्धांतिक रूप से थोड़ा कम कुशल भी हो सकता है, लेकिन इस तरह से कि किसी भी आधे रास्ते सभ्य संकलक आसानी से अनुकूलित कर सकते हैं।
स्रोत
2013-11-13 00:26:59
आपने किस कोड का प्रयास किया है? – Mark