आधुनिक C ++ निर्माण का उपयोग करने वाले पुस्तकालयों के दो उदाहरण:
- दोनों eigen और armadillo पुस्तकालयों (रैखिक बीजगणित) कई आधुनिक C ++ कंस्ट्रक्शन का उपयोग करते हैं। उदाहरण के लिए, वे अंकगणितीय अभिव्यक्तियों को सरल बनाने के लिए दोनों अभिव्यक्ति टेम्पलेट्स का उपयोग करते हैं और कभी-कभी कुछ अस्थायीताओं को समाप्त कर सकते हैं:
http://eigen.tuxfamily.org
http://arma.sourceforge.net/
http://hpac.rwth-aachen.de/teaching/sem-accg-14/Armadillo.pdf (आर्मादिलो में अभिव्यक्ति टेम्पलेट्स पर प्रस्तुति)
- CGAL पुस्तकालय (कम्प्यूटेशनल ज्यामिति) कई आधुनिक C ++ सुविधाओं का उपयोग करता है (यह खासतौर पर टेम्पलेट्स और विशेषज्ञता का उपयोग करता है):
http://www.cgal.org
ध्यान दें:
आधुनिक सी ++ निर्माण बहुत ही सुरुचिपूर्ण हैं और उपयोग करने में बहुत मज़ेदार हो सकते हैं। यह एक मजबूत बिंदु और कमजोरी दोनों है: जब उनका उपयोग करते हैं, तो टेम्प्लेट / स्पेशलाइजेशन / लैम्ब्डा की कई परतों को जोड़ना इतना लुभावना होता है कि अंत में आपको कभी-कभी प्रोग्राम में प्रभावी कोड की तुलना में अधिक "प्रशासन" मिलता है (दूसरे शब्दों में,) आपके कार्यक्रम "वार्ता" समाधान का वर्णन करने की तुलना में समस्या के बारे में अधिक)। सही संतुलन खोजना बहुत ही सूक्ष्म है। निष्कर्ष: किसी को कोड में "सिग्नल / शोर" अनुपात के विकास को मापने के द्वारा ट्रैक करने की आवश्यकता है :
- कार्यक्रम में कोड की कितनी लाइनें हैं?
- कितने वर्ग / टेम्पलेट?
- कार्यकारी समय ?
- स्मृति की खपत?
सब कुछ जो पहले दो को बढ़ाता है, उसे एक लागत के रूप में माना जा सकता है (क्योंकि यह कार्यक्रम को समझने और बनाए रखने के लिए कठिन बना सकता है), पिछले दो लोगों को कम करने वाली हर चीज एक लाभ है ।
उदाहरण के लिए, एक अमूर्त (एक आभासी वर्ग या एक टेम्पलेट) को लागू करने से कारक कोड हो सकता है और कार्यक्रम को सरल ( लाभ ) बना सकता है, लेकिन अगर इसे केवल एक बार व्युत्पन्न / प्रेरित नहीं किया जाता है, तो यह बिना किसी संबद्ध लाभ के लागत का परिचय देता है (फिर से) सूक्ष्म क्योंकि लाभ कार्यक्रम के भविष्य के विकास में बाद में आ सकता है, इसलिए कोई "सुनहरा नियम" नहीं है)।
प्रोग्रामर के आराम भी लागत / लाभ संतुलन में ध्यान में रखा जाने वाला एक महत्वपूर्ण कारक है: बहुत सारे टेम्पलेट्स के साथ, संकलन समय में काफी वृद्धि हो सकती है, और त्रुटि संदेशों को पार्स करना मुश्किल हो जाता है।
यह भी देखें
कम्प्यूटेशनल साइंस में उपयोगी C ++ टेम्प्लेट का उपयोग करके जेनेरिक और मेटा-प्रोग्रामिंग किस सीमा तक है?