2010-03-25 20 views
8

मैं लगभग एक साल के लिए प्रोग्रामिंग सी ++ रहा हूं और जब मैं देख रहा हूं कि मुझे एसटीएल के बहुत सारे संदर्भ दिखाई देते हैं।एसटीएल का मुद्दा क्या है?

क्या कोई मुझे बता सकता है कि यह क्या करता है?

और इसके फायदे और नुकसान?

भी क्या यह मेरे Borlands VCL या MFC से अधिक देता है?

धन्यवाद

+17

संभावना है कि आप एक वर्ष के लिए प्रोग्रामिंग सी रहे हैं और बस सी ++ खोजें। गंभीरता से, एसटीएल के बिना सी ++ अपंग है। – Thorsten79

+1

@ Thorsten79: या, यदि वह वास्तव में नहीं जानता कि एसटीएल क्या है, तो वह मानक पुस्तकालय के हिस्से के रूप में कंटेनर कक्षाएं, एल्गोरिदम और इटरेटर का उपयोग कर सकता है। एसटीएल उचित रूप से सी ++ मानकीकृत होने से पहले विकसित एक टेम्पलेट लाइब्रेरी थी, और इसे बस मानक पुस्तकालय में अवशोषित किया गया था। –

+0

@ जोनाथन डी, वीसीएल और एमएफसी ज्यादातर जीयूआई ढांचे हैं। एसटीएल डेटा संरचनाओं का संग्रह है। –

उत्तर

23

यह सी ++ मानक पुस्तकालय है कि आप उन्हें आदि के साथ हेरफेर करने के लिए बहुत ही उपयोगी कंटेनर, तार, एल्गोरिदम के सभी प्रकार देता है

शब्द 'एसटीएल' IMHO पुरानी है, क्या एसटीएल हुआ करता था बन गया है है एक सी ++ के लिए मानक पुस्तकालय का बड़ा हिस्सा।

यदि आप कोई गंभीर सी ++ विकास कर रहे हैं, तो आपको इस पुस्तकालय से परिचित होना होगा और अधिमानतः boost लाइब्रेरी। यदि आप पहले से इसका उपयोग नहीं कर रहे हैं, तो आप शायद अबाउटक्शन के गलत स्तर पर काम कर रहे हैं या आप स्वयं को C++ के छोटे-छोटे सबसेट में बाध्य कर रहे हैं।

+0

यह मुझे बोर्लैंड वीसीएल या माइक्रोसॉफ्ट एमएफसी पर क्या देता है? –

+1

@ जोनाथन डी: पोर्टेबिलिटी, आपके द्वारा लिखे गए कोड और स्वयं और आपके कौशल भी। – Teddy

+11

जोनाथन डी: सी ++ नौकरी पाने की क्षमता। एसटीएल का उपयोग करने की क्षमता के बिना सी ++ को जानने का दावा करने के लिए किसी भी नौकरी साक्षात्कार के पहले स्तर पर आपको अस्वीकार कर दिया जाएगा। –

0

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

1

"फायदे और हानिकर" क्या की तुलना में? खुद को वह कोड लिखने के लिए? ज़ाहिर ही है? यह उन्हें

2

यह प्रोग्रामर के लिए आम उपयोगी उपकरण प्रदान करता है के साथ काम करने के लिए महान संग्रह और उपकरण है! Iterators, एल्गोरिदम, आदि पहिया फिर से आविष्कार क्यों? - एक मानक स्ट्रिंग प्रकार की कमी http://en.wikipedia.org/wiki/Standard_Template_Library

एसटीएल सी के ++ एक बड़ी कमी को ठीक करता:

0

विकिपीडिया एक अच्छा सिंहावलोकन है। इससे असंख्य सिरदर्द पैदा हुए हैं क्योंकि हजारों स्ट्रिंग कार्यान्वयन हुए हैं जो अच्छी तरह से काम नहीं करते हैं।

+0

मानक लाइब्रेरी में स्ट्रिंग प्रकार एसटीएल का हिस्सा नहीं था, या कम से कम एसटीएल स्टेपानोव और ली द्वारा डिजाइन किया गया था। –

+0

@Neil आप सही हैं। यह सी ++ मानक पुस्तकालय (http://en.wikipedia.org/wiki/C%2B%2B_standard_library) का हिस्सा है, एसटीएल (http://en.wikipedia.org/wiki/Standard_Template_Library) नहीं। लेकिन तब मुझे लगता है कि कई लोग "एसटीएल" कहते हैं जब उनका मतलब है "सी ++ मानक पुस्तकालय"। (तथ्य यह है कि वे बहुत से हैं, उन्हें सही नहीं बनाते हैं।) –

+0

फिर भी, आपको अभी भी सी ++ कोड में बहुत सी स्ट्रिंग लाइब्रेरी मिलती हैं। याद रखें RogueWave, CString + हर कोई सोचता था कि वे इसे बेहतर कर सकते हैं? उल्लेख नहीं है कि std :: स्ट्रिंग में संदर्भ गिनती कई कार्यान्वयन में थ्रेड-सुरक्षित नहीं थी। –

0

यह मानक टेम्पलेट लायब्रेरी

यह कार्य करता है और वर्ग है कि वहाँ आप बहुत काम को बचाने के लिए कर रहे हैं का एक सेट है के लिए खड़ा है।

वे टेम्पलेट का उपयोग करने के लिए है, जो जगह है जहाँ आप एक समारोह को परिभाषित तैयार कर रहे हैं, लेकिन बाहर परिभाषित करने के लिए क्या डेटा प्रकार के साथ इस पर काम करेंगे।

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

यह एक कठिन बात के बारे में सोचना है, लेकिन यह बेहद शक्तिशाली है और आप समय का भार बचा सकता है।

अब इसे पढ़ लें! आप इसे पछतावा चाहते हैं।

3

एसटीएल मानक टेम्पलेट लाइब्रेरी है। किसी भी लाइब्रेरी की तरह यह कोड का एक संग्रह है जो आपके जीवन को फिर से उपयोग करने के लिए अच्छी तरह से परीक्षण, मजबूत कोड प्रदान करके आसान बनाता है।

  1. एक संग्रह (नक्शा, सूची, वेक्टर, आदि) वे (,,, for_each प्रतिलिपि, को बदलने आदि) एसटीएल में हैं
  2. एक संग्रह पर काम करने की आवश्यकता है वे एसटीएल
  3. में हैं की आवश्यकता है
  4. I/O करने की आवश्यकता है, इसके लिए कक्षाएं हैं।

लाभ

1, आप मानक कंटेनर फिर से लागू करने (ग्राहकों तुम वैसे भी गलत यह मिल जाएगा)

के बारे में अधिक जानने के लिए निकोलाई M.Josuttis द्वारा इस book पढ़ें की जरूरत नहीं है एसटीएल, यह वहां सबसे अच्छी एसटीएल संदर्भ पुस्तिका है।

0

यह आपको कॉकटेल पार्टियों में टॉस करने के लिए एक और संक्षिप्त शब्द देता है।

गंभीरता से, परिचय शुरू करने वाले परिचय दस्तावेज़ों की जांच करें। Wikipedia article on STL के साथ।

+3

प्रोग्रामर कॉकटेल पार्टियों पर नहीं जाते हैं। वे लैन पार्टियों के पास जाते हैं। –

4

एसटीएल मानक टेम्पलेट लाइब्रेरी के लिए खड़ा है। यह मुख्य रूप से स्टेपानोव और ली द्वारा डिजाइन की गई लाइब्रेरी थी जिसे सी ++ मानक पुस्तकालय के हिस्से के रूप में अपनाया गया था। अवधि धीरे-धीरे व्यर्थ होता जा रहा है, लेकिन मानक पुस्तकालय के इन भागों को शामिल किया गया है: (आदि वैक्टर, नक्शे)

  • कंटेनर
  • iterators
  • एल्गोरिदम

तो आप अपने आप को एक सी ++ फोन प्रोग्रामर, आपको इन सभी अवधारणाओं, और उनके मानक मानक कार्यान्वयन से परिचित होना चाहिए।

+0

अफवाह यह है कि एसटीएल वास्तव में "स्टेपानोव और ली" के लिए खड़ा है! (अफवाह * था * यह, वैसे भी ...) –

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