operator[]
std::map
में अंतर यह है कि मानक में यह (*((insert(make_pair(x, T()))).first)).second
लौटने, जबकि एसटीएल में m[k]
(*((m.insert(value_type(k, data_type()))).first)).second
के बराबर के रूप में परिभाषित के रूप में परिभाषित किया गया है है।
अंतर यह है कि सी ++ कार्यान्वयन के अनुरूप make_pair
पर कॉल करें जबकि एसटीएल सीधे जोड़ी को बनाता है। मैं दो मतभेदों के बारे में सोच सकता हूं:
1) मानक यूवी की एक अतिरिक्त प्रति (और इसलिए कुंजी और डेटा ऑब्जेक्ट्स) की अनुमति देता है, यदि आरवीओ make_pair
पर कॉल के लिए लात मारने में विफल रहता है। जैसा कि मैंने इसे पढ़ा है, एसटीएल इस प्रतिलिपि की अनुमति नहीं देता है (हालांकि insert
में लाइन के नीचे एक और प्रतिलिपि है)। यह मायने रखता है कि यदि कुंजी या मान प्रकार में अवलोकन करने वाले साइड इफेक्ट्स के साथ प्रतिलिपि बनाने वाले निर्माता हैं।
2) उपयोगकर्ता std::make_pair
या std::pair
का विशेषज्ञ कर सकते हैं। यदि वे make_pair
विशेषज्ञ हैं तो उनके कोड को मानक सी ++ में कॉल करने की गारंटी है, और एसटीएल में कॉल नहीं होने की गारंटी है।
इस तरह की विशेषज्ञता, यूबी कारण अगर वे टेम्पलेट की आवश्यकताओं को संतुष्ट नहीं है, हालांकि, और make_pair
के मामले में मुझे लगता है कि अगर यह किसी भी नमूदार जोड़ी बनाने के अलावा अन्य असर पड़ता है, तो यह नहीं है लगता है आवश्यकताओं को पूरा करें। तो इस मामले में की गारंटी देने के लिए इस मामले में मुश्किल या असंभव हो सकता है ताकि आप यह कह सकें कि इसे कॉल किया गया है या नहीं। व्यावहारिक रूप से यदि कार्यान्वयन ने स्पष्ट बात की है और मानक से कोड का उपयोग किया है, तो आप आसानी से एक अंतर देखेंगे ...
उपयोगकर्ता एडीएल-ओवरलोड make_pair
, एक ही चेतावनी, अतिरिक्त जटिलताओं के साथ मैं ' मुझे कभी भी यकीन नहीं है कि अयोग्य फंक्शन कॉल के मानक में उल्लेख की आवश्यकता है कि कार्यान्वयन एक ही अयोग्य कॉल करें। मुझे यकीन है कि मैंने सुना है कि कुछ कार्यान्वयन ने ऐसे मामलों में std::whatever
पर पूरी तरह से योग्य कॉल की है, शायद गलती से।
क्या यह इस तरह की चीज है जिसके बाद आप हैं?
स्रोत
2011-05-12 22:47:18
संभावित डुप्लिकेट [मानक पुस्तकालय और मानक टेम्पलेट लाइब्रेरी के बीच क्या अंतर है?] (Http://stackoverflow.com/questions/4064010/what-is-the-difference-between-the-standard-library -और-मानक-टेम्पलेट-lib) –
@ फ़्रेड: __ नहीं, यह गलत है! इसे बंद न करें/मर्ज करें! __ – sbi
इस प्रश्न में कुछ हद तक भ्रामक शीर्षक था। (मैंने अभी तय किया है।) इसका इरादा ___ विशिष्ट स्पेक्ट्रम__ के लिए ___original STL___ और उसके उन हिस्सों के बीच पूछना है जो मानक पुस्तकालय___ में ___incorporated हो गए हैं। – sbi