Apache C++ standard library से मुझे क्या लाभ मिलते हैं कि मुझे कंपाइलर और बूस्ट पुस्तकालयों के साथ आने वाले एसटीएल कार्यान्वयन से नहीं मिलता है?बूस्ट के साथ किसी भी अन्य एसटीएल कार्यान्वयन के बजाय मुझे अपाचे सी ++ मानक पुस्तकालय का उपयोग क्यों करना चाहिए?
उत्तर
अपाचे सी ++ स्टैंडर्ड लाइब्रेरी परियोजना आईएसओ/आईईसी 14882 सी ++ स्टैंडर्ड लाइब्रेरी की एक पूरी कार्यान्वयन है।
सबसे ख़ास विशेषता सी ++ स्टैंडर्ड लाइब्रेरी के इस कार्यान्वयन के सी ++ compilers, ऑपरेटिंग सिस्टम की एक बड़ी संख्या के लिए अपनी पोर्टेबिलिटी, और हार्डवेयर आर्किटेक्चर है।
लगता है जैसे आप अत्यधिक पोर्टेबिलिटी मानते हैं तो यह आपके लिए है। यदि आप नहीं करते हैं, तो अधिकांश लोग अपने कंपाइलर के डिफ़ॉल्ट कार्यान्वयन पर चूक जाते हैं, इसलिए यदि आपको कभी परेशानी होती है, तो समुदाय बड़ा होगा। यदि आप कार्यान्वयन के मुद्दों में नहीं भागते हैं तो मुझे नहीं लगता कि इसे एक अंतर क्यों बनाना चाहिए।
मुझे आम तौर पर इस राय के लिए फ्लेम किया जाता है लेकिन मुझे ऐसी समस्याएं पसंद हैं जो मैं समस्याओं को ठीक करने के लिए भुगतान कर सकता हूं, मेरे डेवलपर (और मैं) पर्याप्त नहीं हैं (या समय नहीं है) गोता लगाने के लिए आंतरिक और फिक्स बग।
अपाचे सी ++ लाइब्रेरी मूल रूप से रॉग वेव से एक वाणिज्यिक पुस्तकालय थी। वे सी ++ मानक को बहुत बारीकी से ट्रैक करने और विभिन्न ऑपरेटिंग सिस्टम और कंपाइलर्स में पोर्टेबिलिटी बीमा करने के लिए कड़ी मेहनत करने का दावा करते हैं। रॉग वेव लाइब्रेरी का दावा है कि 40 से अधिक कंपाइलर्स को पोर्ट किया गया है। ,
- तेजी से compiles और अत्यंत छोटे निष्पादन योग्य फ़ाइल के लिए अनुकूलित आकार
इस पत्र में Stroustrup:
लाभों में से एक stdxx
दावों मेरे लिए सच हो रहा है कि SCARY
नामक कुछ सी ++ कंपाइलर्स में लागू एक नए विचार के बारे में बात करते हैं। मैंने पहले इसके बारे में one of his papers में पढ़ा। वैसे भी, यह सुविधा बड़ी संख्या में (~1x - ~25x)
द्वारा उत्पादित निष्पादन योग्य आकार को कम करने की अनुमति देता है, और (~1.2x - ~2.1x)
द्वारा तेज़ी से। पहले पत्र में उन्होंने कहा कि Rogue Wave STL
SCARY
का समर्थन करता है, कम से कम आधुनिक कार्यान्वयन में:
रोग वेव एसटीएल का नवीनतम संस्करण इसके उत्पादन मोड में iterators स्वतंत्र कंटेनर है, लेकिन मानक कंटेनरों के कुछ ' iterators मोड डीबग में स्वतंत्र नहीं हैं। N2911 बताता है कि इन निर्भरताओं को वास्तव में डिबगिंग उद्देश्यों के लिए आवश्यक नहीं है और आसानी से हटाया जा सकता है।
तो, अगर stdxx
Rogue Wave STL
पर आधारित है, यह इस विचार को पहले से ही लागू किया हो सकता है।
stdxx 2005 में फोर्क किया गया था; एससीआरआई पेपर हाल ही में है। – MSalters
मैं अपाचे सी ++ मानक पुस्तकालय से परिचित नहीं हूं, इसलिए मुझे यकीन नहीं है कि इसमें क्या सुविधाएं हैं।यदि आपको लगता है कि यह आपको जो भी चाहिए, वह सब कुछ प्रदान करता है, तो उसमें इसका उपयोग करने में कोई फर्क नहीं पड़ता है या बूस्ट के साथ एक और एसटीएल कार्यान्वयन का उपयोग नहीं किया जाता है। हालांकि, बूस्ट कुछ टीआर 1 सुविधाओं और स्मार्ट पॉइंटर्स जैसी छोटी चीजों से बहुत अधिक प्रदान करता है। यह भी है:
- lambdas/क्लोजर
- खाका और पूर्वप्रक्रमक metaprogramming
- सिग्नल और स्लॉट/पर्यवेक्षक/श्रोता पैटर्न कार्यान्वयन
- संदर्भ रैपर
- अन्य यादृच्छिक बातें आप नहीं कर रहे हैं का एक बहुत एक पुस्तकालय में कहीं और खोजने की संभावना
यह सब आपको आवश्यक सुविधाओं पर निर्भर करता है।
दुर्भाग्य से इस पुस्तकालय नहीं रह गया है जुलाई 2013 के रूप में समर्थित है मेलिंग सूची घोषणा देखें: http://mail-archives.apache.org/mod_mbox/stdcxx-dev/201307.mbox/browser
अद्यतन के लिए धन्यवाद –
- 1. मुझे जीडब्ल्यूटी के बजाय jQuery का उपयोग क्यों करना चाहिए?
- 2. क्या मुझे MySQL के बजाय NoSQL का उपयोग करना चाहिए?
- 3. एसएसकेएनएफ के बजाय मुझे क्या उपयोग करना चाहिए?
- 4. सी ++ मानक पुस्तकालय के संस्करण
- 5. मुझे हैश के बजाय ओपनस्ट्रक्चर का उपयोग कब करना चाहिए?
- 6. मुझे @properties का उपयोग क्यों करना चाहिए?
- 7. मुझे एमवीसी के साथ डब्ल्यूसीएफ का उपयोग क्यों करना चाहिए?
- 8. परिपक्व मानक पुस्तकालय सी
- 9. आप strcpy के बजाय strncpy का उपयोग क्यों करना चाहिए?
- 10. मुझे GET के बजाय डेटा पोस्ट क्यों करना चाहिए?
- 11. मुझे UIImagePickerControllerSourceTypePhotoLibrary का उपयोग UIImagePickerControllerSourceTypeSavedPhotosAlbum के बजाय कब करना चाहिए?
- 12. मुझे इनलाइन के बजाय __forceinline का उपयोग कब करना चाहिए?
- 13. मुझे fprintf के बजाय fputs का उपयोग कब करना चाहिए?
- 14. मुझे फ्लेक्स का उपयोग क्यों करना चाहिए?
- 15. मुझे glbindAttribLocation का उपयोग क्यों करना चाहिए?
- 16. मुझे डोलॉल्स का उपयोग क्यों करना चाहिए?
- 17. मुझे एमएक्सएमएल का उपयोग क्यों करना चाहिए?
- 18. मुझे ईएमएफ का उपयोग क्यों करना चाहिए?
- 19. मुझे "नियमित" एचटीएमएल के बजाय content_tag का उपयोग क्यों करना चाहिए?
- 20. मुझे गिटिनोरोर का उपयोग क्यों करना चाहिए?
- 21. मुझे अन्य संग्रहों में से किसी एक के बजाय स्कैला के ऐरे का उपयोग कब करना चाहिए?
- 22. मुझे डिस्पैचर का उपयोग क्यों करना चाहिए?
- 23. मिनीडिंप के साथ मुझे किन सेटिंग्स का उपयोग करना चाहिए?
- 24. मुझे RoleEnvironment.StatusCheck इवेंट की सदस्यता लेने के बजाय लोडबैलेंसरप्रोब का उपयोग क्यों करना चाहिए?
- 25. लोडविथपार्टियलनाम() के बजाय मुझे क्या उपयोग करना चाहिए?
- 26. मुझे फ़ील्ड के बजाय स्वचालित रूप से कार्यान्वित संपत्ति का उपयोग क्यों करना चाहिए?
- 27. मुझे इकाई ढांचे के बजाय निबर्ननेट का उपयोग क्यों करना चाहिए 4
- 28. ActiveRecord के साथ गैर-मानक तालिका को कैसे मैप करना है या क्या मुझे अन्य ORM का उपयोग करना चाहिए?
- 29. पर्ल में printf के बजाय मुझे क्या उपयोग करना चाहिए?
- 30. मुझे [x] के बजाय ऑपरेटर.इटमेटेटर (x) का उपयोग क्यों करना चाहिए?
पोस्ट कुछ पृष्ठभूमि –
मैं के बाद से यह 'पोर्टेबल' है और यह भी अपने प्रोजेक्ट में अपाचे के सी ++ मानक पुस्तकालय का उपयोग करने का सुझाव दिया गया था संग्रह और कई अन्य एल्गोरिदम कार्यान्वयन के समृद्ध सेट है। मैं अंधेरे से सुझाव का पालन नहीं करना चाहता, इसलिए उन लोगों से इनपुट की तलाश करना जिनके पास विभिन्न टेम्पलेट पुस्तकालयों का उपयोग करके बेहतर ज्ञान और अनुभव है। धन्यवाद। –
आपके बूस्ट भाग के बारे में: क्या आप पूछ रहे हैं कि आपको बूस्ट के स्थान पर अपाचे सी ++ मानक लाइब्रेरी का उपयोग करना चाहिए या नहीं? या एसटीएल कार्यान्वयन – blwy10