boost::make_shared
अब अप्रचलित है? 1.35 में इसकी परिभाषा नहीं मिली है।बढ़ावा है :: make_shared अप्रचलित अब?
उत्तर
इसके 1.4 डॉक्स में: http://www.boost.org/doc/libs/1_40_0/libs/smart_ptr/make_shared.html
यह संस्करण में जोड़ दिया गया है करने के लिए 1.39
धन्यवाद रयान। क्या यह पता लगाने का कोई तरीका है कि यह किस संस्करण को पेश किया गया है? – Steve
smart_ptr दस्तावेज़ में एक इतिहास अनुभाग है जो आपको जो चाहिए उसे ढूंढने में आपकी सहायता कर सकता है: http://www.boost.org/doc/libs/1_40_0/libs/smart_ptr/smart_ptr.htm#History –
यह सी ++ का भी हिस्सा है 0x –
आज अनुसंधान का एक सा था प्रकट होता है, और यह है कि वास्तव में make_shared 1.36.0 को जोड़ा गया है लगता है (1.35 में .0 ऐसा कोई हेडर नहीं है), लेकिन दिलचस्प बात यह है कि इस बदलाव के बारे में नया क्या है इसका कोई भी उल्लेख नहीं है - कम से कम मुझे यह नहीं मिला
std :: make_shared सी ++ 11 में भी उपलब्ध है । कृपया ध्यान दें कि make_shared सुविधा सुविधा से अधिक है। निम्न उदाहरण में:
make_shared<foobar>(1, 2);
shared_ptr<foobar>(new foobar(1, 2));
दोनों बयान एक foobar वस्तु बना सकते हैं और एक shared_ptr का निर्माण। हालांकि, पूर्व साझा काउंटर के लिए स्मृति आवंटन से बचाता है, क्योंकि काउंटर और फोबबार ऑब्जेक्ट के लिए एक मेमोरी खंड का उपयोग किया जाएगा। बाद के कथन के साथ यह संभव नहीं है, क्योंकि shared_ptr का निर्माण करने से पहले foobar की स्मृति आवंटित की जाती है।
मैं क्या कहना चाहता हूं: नहीं, make_shared अप्रचलित नहीं है, क्योंकि यह एक बहुत ही उपयोगी अनुकूलन प्रदान करता है।
सी ++ 11 में, 'std :: make_shared'' वास्तव में ऑब्जेक्ट बनाने पर प्रदर्शन अनुकूलन है, फिर' 'std :: shared_ptr'' बना रहा है, क्योंकि यह केवल प्रदर्शन करता है दो की बजाय एक स्मृति आवंटन। – Sean
एक और महत्वपूर्ण अंतर धागा सुरक्षा है। दूसरे उदाहरण में, 'shared_ptr'' ctor फेंक सकता है जबकि नेस्टेड नए द्वारा आवंटित foobar जारी नहीं किया जाएगा। –
- 1. बढ़ावा :: make_shared कॉलिंग (प्लेसमेंट) ऑपरेटर नया नहीं है?
- 2. डेटाटेबल और डेटासेट अब अप्रचलित होना चाहिए?
- 3. make_shared constness
- 4. NUnit.Framework.Assert.IsInstanceOfType() अप्रचलित है
- 5. क्या "एकल आवंटन" बढ़ावा ::
- 6. क्या एमएसएमक्यू अप्रचलित है?
- 7. क्या एलडीएपी अप्रचलित है?
- 8. ConfigurationSettings.AppSettings, अप्रचलित है
- 9. c3p0 अप्रचलित है?
- 10. CodeDomProvider.CreateCompiler() अप्रचलित है
- 11. "यह प्रॉपर्टी सेटर अप्रचलित है, क्योंकि इसका मान मॉडलमैटाडाटा से लिया गया है। अब मॉडल।"
- 12. सी ++ make_shared उपलब्ध नहीं
- 13. "खराब लाइन ब्रेकिंग" अप्रचलित "सख्त उपयोग" के साथ अप्रचलित है?
- 14. क्यों सी ++ 11 `make_shared` है लेकिन` make_unique`
- 15. जेएसटीएल टैगलिब यूआरआई अप्रचलित है?
- 16. @Page {आकार: परिदृश्य} अप्रचलित है?
- 17. बढ़ावा है :: इंटरप्रोसेस थ्रेडसेफ?
- 18. std :: make_shared अमूर्त वर्ग तात्कालिकता
- 19. बढ़ावा :: टोकननाइज़र बनाम बढ़ावा :: विभाजन
- 20. MySqlCommand Command.Parameters.Add अप्रचलित
- 21. XXXX अब उपयोग नहीं किया गया है। <देखने cref = "EdmModelDiffer" /> अब मॉडल
- 22. बढ़ावा:
- 23. क्या स्कैला में डीएओ पैटर्न अप्रचलित है?
- 24. टेम्पलेट फ़ंक्शन के लिए 'typedef' (boost :: make_shared)
- 25. std :: make_shared, std :: unique_ptr और चाल कंस्ट्रक्टर्स
- 26. अब सिंक सेवा अप्रचलित हो रही है, ओएसएक्स पर संपर्कों को सिंक करने का एक विश्वसनीय विकल्प क्या है?
- 27. अप्रचलित पुस्तकालय वर्ग
- 28. क्लोजर में अप्रचलित प्रतीक
- 29. अप्रचलित System.Xml.XmlDataDocument को बदलना?
- 30. पुराने अप्रचलित कोड को
विडंबना यह है कि यहां आने वाले ज्यादातर लोग शायद सोच रहे हैं (जैसे खुद) अगर यह अप्रचलित है क्योंकि यह सी ++ 11 में है। (संक्षिप्त उत्तर: हाँ, आप std :: संस्करणों का उपयोग कर सकते हैं।) – patrickvacek
... जब तक कि आपको प्री-सी ++ 11 प्लेटफॉर्म पर संगतता रखने की आवश्यकता न हो, उस स्थिति में बूस्ट स्मार्ट पॉइंटर्स * वास्तव में * अच्छा लाभ हैं। – DevSolar