2010-11-29 17 views
6

मैं वेक्टर स्रोत कोड प्राप्त करने की कोशिश कर रहा हूं यह देखने के लिए कि मानक std या stl वेक्टर लागू किया गया है।सी ++ वेक्टर स्रोत कोड

यह सीखने के उद्देश्य के लिए है। अब सवाल यह है कि मुझे स्रोत कोड कहां मिल सकता है। अन्य सी ++ कंटेनर का स्रोत कोड भी सहायक है।

+3

देखना और सीखना हमेशा अच्छा होता है। लेकिन मुझे यकीन नहीं है कि 'std :: vector' के रूप में जटिल कुछ के स्रोत कोड को देखना एक अच्छा विकल्प है। निश्चित रूप से आप बहुत कुछ सीख सकते हैं लेकिन आप भी आसानी से खो सकते हैं। – ereOn

+0

कई एसटीएल कार्यान्वयन में इटेटरेटर डिबगिंग जैसी चीजों के लिए बहुत सारे कोड शामिल होंगे - यह बहुत मुश्किल है और बहुत सारे कोड को शामिल करना मुश्किल है जो वेक्टर के लिए सीधे प्रासंगिक नहीं है। सीखने के लिए सबसे अच्छी जगह नहीं हो सकती है। – AshleysBrain

उत्तर

3

अधिकांश std::vector स्रोत कोड <vector> शीर्षलेख में ही शामिल होना चाहिए।

मानक पुस्तकालय कंटेनर सभी वर्ग टेम्पलेट्स हैं और इस तरह, उनकी परिभाषाएं और उनके सभी सदस्य कार्यों की परिभाषा उनके संबंधित शीर्षकों में निहित है।

ध्यान दें कि किसी भी कंटेनर का कोई भी सही कार्यान्वयन नहीं है; प्रत्येक सी ++ मानक लाइब्रेरी कार्यान्वयन प्रत्येक कंटेनर को लागू करने के लिए स्वतंत्र है क्योंकि यह फिट दिखाई देता है, जब तक यह कंटेनर की आवश्यकताओं को पूरा करता है।

10

कोई 'मानक' वेक्टर नहीं है - मानक व्यवहार और इंटरफेस को परिभाषित करता है (और कुछ कार्यान्वयन विवरण, जैसे संगत भंडारण) लेकिन कोड संकलक लेखकों के निर्धारण के लिए एक मामला है।

आपके कंपाइलर के पास अपनी <vector> हैडर फ़ाइल होना चाहिए, क्या आपने इसके निर्माण में इसके लिए पथ शामिल किया है? एक बार जब आप पाते हैं कि आपको अन्य संबंधित एसटीएल कंटेनरों को अपने संबंधित शीर्षकों में भी देखना चाहिए। माइक्रोसॉफ्ट विज़ुअल सी ++ के लिए सूची here है, कुछ है कि मालिकाना कर रहे हैं, ताकि नीचे दिए गए नमूना त्याग प्रति के लिए बाहर घड़ी सहित:

दृश्य C++ .NET 2003, <hash_map> और <hash_set> हैडर फ़ाइलों के सदस्य हैं अब std नामस्थान में नहीं है, बल्कि को stdext नेमस्पेस में स्थानांतरित कर दिया गया है। अधिक जानकारी के लिए stdext नेमस्पेस देखें।

विजुअल C++ एक्सप्रेस 2010 की मेरी स्थापना पर, वे इस फ़ोल्डर में हैं:

c: \ Program Files \ Microsoft Visual स्टूडियो 10.0 \ vc \ शामिल

5

अलग क्रम अलग कार्यान्वयन है।

लेकिन मैं इस लगता है कि आप क्या चाहते हैं, व्यापक रूप से इस्तेमाल जीसीसी कार्यान्वयन है: https://github.com/gcc-mirror/gcc/blob/master/libstdc%2B%2B-v3/include/std/vector

यह मुख्य हेडर फ़ाइल है, और कार्यान्वयन https://github.com/gcc-mirror/gcc/blob/master/libstdc%2B%2B-v3/include/bits/stl_vector.h और https://github.com/gcc-mirror/gcc/blob/master/libstdc%2B%2B-v3/include/bits/stl_bvector.h

यह मैक्रो का उपयोग में है कोड को अच्छे प्रदर्शन में चलाने और परिवर्तनीय स्थिति में फिट करने के लिए, लेकिन इसे पढ़ने में कठोर बनाना, शुभकामनाएं देना चाहते हैं।

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