2010-11-25 10 views
12

मुझे पता है कि एसटीएल स्मृति आवंटन त्रुटि पर फेंक देगा या यदि निहित प्रकार उसके कन्स्ट्रक्टर/असाइनमेंट ऑपरेटर में फेंकता है।क्या एसटीएल कंटेनर विधियों की एक सूची है जो कहीं भी अपवाद फेंक सकती है?

अन्यथा, स्पष्ट रूप से 'कुछ' एसटीएल विधियां अन्य अपवादों को फेंक सकती हैं। उदाहरण में सभी का उल्लेख वेक्टर :: पर() है, लेकिन मुझे कहीं भी दूसरों की सूची नहीं मिल रही है।

क्या किसी को ऐसी सूची पता है?

+3

मैं एक का पता नहीं है। यह देखते हुए कि (लगभग) कोई भी दो लोग सी ++ मानक पुस्तकालय के "एसटीएल" और "गैर-एसटीएल" भागों के बीच की सीमा पर सहमत नहीं हैं, सी ++ प्रोग्रामर का एक साधारण बहुमत शायद कम से कम कुछ सम्मान में ऐसी किसी भी सूची "गलत" पर विचार करेगा। –

+0

@ जेरी: शीर्षक विशेष रूप से इसे एसटीएल कंटेनर तक सीमित करता है, जिसमें एक स्पष्ट स्पष्ट दायरा है (यहां तक ​​कि सामान्य/tr1 एक्सटेंशन पर विचार करना)। –

+0

यह भी समस्या है कि किसी भी उपयोगकर्ता द्वारा घोषित प्रतिलिपि ctor, कॉपी op =, ctor को ले जाएं, और move op = कुछ भी फेंक सकता है ... –

उत्तर

16

100% सही नहीं होगा, और के लिए सी ++ 03 है, लेकिन जीसीसी 4.3.4 भी शामिल है, tr1 और ext अनदेखी के माध्यम से grepping लेकिन iostream सहित के आधार पर एक आधे घंटे प्रयास। महत्वपूर्ण बात, इन चेकों की कुछ इस कार्यान्वयन अधिक रक्षात्मक कोडिंग पसंद की की वजह से हो सकता है, और मानक और सार्वभौमिक रूप से उपलब्ध में अनिवार्य नहीं किया जा सकता है ....

  • bitset
    • std::overflow_error - .to_ulong() जब बहुत सारे अंत
  • new अतीत operator[]() प्रयास - बिट्स अहस्ताक्षरित लंबे
  • std::out_of_range में फिट करने के लिए
    • std::bad_alloc
  • typeinfo
    • अमान्य dynamic_cast प्रयास पर std::bad_cast
  • ios
    • std::ios_base::failure whe n त्रुटि के लिए अपवाद मास्क का उपयोग कर
  • string
    • out_of_range रिपोर्टिंग - at/append/assign/insert/erase/replace/copy/substr
    • length_error: reserve या अस्पष्ट आकार बदलने के दौरान max_size() को पार करने का प्रयास (उदाहरण के लिए assign/insert/+= इत्यादि।)
  • locale
    • std::bad_cast अगर लोकेल प्रकार का ही एक पहलू शामिल नहीं है Facet
    • विभिन्न में std::runtime_error अशक्त-सूचक/अपरिभाषित-पहलू स्थितियों
  • deque/vector
    • length_error: प्रयास reserve() या परोक्ष-बढ़ने>max_size()
    • out_of_range: at()
  • map
    • std::out_of_range: at()
+0

इसके लिए धन्यवाद, अगर मैं अधिक प्रतिष्ठा प्राप्त करता हूं तो मैं आपको वोट दूंगा :-) –

+0

@ टोनी: कोई चिंता नहीं - उम्मीद है कि इससे मदद मिलती है। –

3

ठीक है, मेरे पास यह बड़ी, विशाल पुस्तक है, सी ++ मानक, जिसमें मानक पुस्तकालय में सभी कार्यों का पूरा विवरण और वे क्या कर सकते हैं/नहीं कर सकते हैं।

+1

हां, लेकिन दुर्भाग्य से आवश्यक जानकारी निकालने के लिए मेरा एल्गोरिदम बग्गी है। यही है, मुझे एक याद आ सकता है :-) –

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