2010-03-26 10 views
10

सी ++ अभिव्यक्ति टेम्पलेट सिस्टम के निर्माण के लिए अच्छे परिचय क्या हैं? मैं अस्थायी मानों (जो बड़ा हो सकता है) से परहेज करते हुए उपयोगकर्ता परिभाषित प्रकारों पर अंकगणित व्यक्त करना चाहता हूं, और यह जानने के लिए कि मौजूदा पुस्तकालय को लागू करने के बजाय इसे सीधे कैसे किया जाए।सी ++ अभिव्यक्ति टेम्पलेट्स के लिए ट्यूटोरियल और परिचय

मुझे Todd Veldhuizen's original paper और Josuttis C++ Templates book से एक उदाहरण मिला है, और Kreft & Langer द्वारा एक लेख मिला है। Modern C++ पर पाठ्यक्रम के व्याख्यान 6 में इसका उल्लेख है, जो जोसुटिस को वापस संदर्भित करता है। POOMA लाइब्रेरी background अभिव्यक्ति टेम्पलेट्स को अच्छी तरह से प्रस्तुत करता है।

मैं सरल, स्पष्ट प्रदर्शनी के लिए देख रहा हूं।

+2

बूस्ट लैम्ब्डा पुस्तकालय इस तकनीक का प्रयोग करने लगता है। मेरे अनुभव से यह उपयोग करने के लिए बहुत बोझिल है और अभी भी बहुत सी सीमाएं हैं; अगर यह भी काम करता है कि कोई आसान स्पष्टीकरण नहीं था तो मुझे आश्चर्य नहीं होगा। – liori

+0

बढ़ावा :: लैम्ब्डा अभिव्यक्ति टेम्पलेट्स से अलग उद्देश्य है। –

उत्तर

5

आपको C++ Templates: The Complete Guide की एक प्रति प्राप्त करनी चाहिए।

आपके द्वारा लिंक किए जाने वाले कोड उदाहरण में साथ में पाठ नहीं है, जो काफी उपयोगी है (अभिव्यक्ति टेम्पलेट्स पर अध्याय 22 पृष्ठ लंबा है)। पाठ के बिना, आपके पास यह है कि बिना किसी टिप्पणी या स्पष्टीकरण के कोड है कि यह क्या करता है और यह कैसे और क्यों करता है।

+1

वंदेवोर्डे और जोसुटिस का एकमात्र वास्तव में पूरा विवरण है। विषय कभी भी * सरल * नहीं होगा, क्योंकि यह एक विषय है जो जटिल और कठिन दोनों है, लेकिन वे सबसे अच्छा काम करते हैं। – jwismar

0

आपको वैज्ञानिक सी ++ पुस्तक को छोड़कर सभी स्रोत मिल गए हैं, जो वास्तव में केवल मूल कागज़ (इस विषय पर wrt) है और यह काफी पुराना है। अभिव्यक्ति टेम्पलेट विचारों से निर्मित अधिक आधुनिक तकनीकों के लिए आप सी ++ टेम्पलेट मेटाप्रोग्रामिंग देख सकते हैं, लेकिन कुछ आसान "सरल" तब तक आसानी से उपलब्ध नहीं होने जा रहा है जब तक कि यह आसान न हो।

0

मैं बूस्ट ऑपरेटर की समीक्षा Boost Operators - Arithmetic पर समीक्षा करने का सुझाव देता हूं। ये टेम्पलेटेड विधियां हैं जो मौलिक अंकगणितीय और तुलना संचालन का विस्तार करती हैं।

2

मैं एरिक निबलर बूस्ट.प्रोटो लाइब्रेरी को देखने के लिए दृढ़ता से प्रोत्साहित करता हूं। एक बहुत ठीक परिचय सामग्री सी से अधिक ++ पाया जा सकता है - अगले:

http://cpp-next.com/archive/2010/08/expressive-c-introduction/

और उनकी बात boost'con 2010 में भी बहुत ही दिलचस्प

6

मैं Expression Templates Demystified पाया काफी अच्छी तरह से समझाया जा सकता है। यह टेम्पलेट के बिना गणितीय अभिव्यक्तियों को कार्यान्वित करने और बुनियादी भवन ब्लॉक और अवधारणाओं को दिखाने के तरीके को दिखाकर शुरू होता है।

लेख का दूसरा भाग दिखाता है कि बेहतर प्रदर्शन और कम कोड के बजाय टेम्पलेट का उपयोग करने के लिए प्रारंभिक कार्यान्वयन को कैसे दोबारा शुरू किया जाए।

आईएमओ, लेख 'सी ++ टेम्पलेट्स: द पूर्ण गाइड' में अभिव्यक्ति टेम्पलेट अध्याय का एक अच्छा विकल्प है।

0

जो आप करना चाहते हैं, उसके लिए आपको बूस्ट.बुला के कोड को देखना चाहिए जैसा कि यह ठीक है।

फ़ाइल vector.hpp फ़ाइल से शुरू करें और फिर पदानुक्रम में वापस जाएं (vector<> के माता-पिता)। Matrices थोड़ा अधिक जटिल हैं, लेकिन तंत्र एक ही है।

अब मैं पुस्तकालय की जटिलता को पहली कोशिश के रूप में पुन: पेश करने की कोशिश नहीं कर सकता, जैसे कि ublas_expression और ऐसी चीजें। आप अपना ऑब्जेक्ट बेस ऑब्जेक्ट बनाकर और बाइनरी ऑपरेटर को कार्यान्वित करके इसे सरल बना सकते हैं।

देखो यहाँ भी: http://www.bnikolic.co.uk/blog/cpp-expression-minimal.html

संबंधित मुद्दे