2010-01-18 20 views
17

क्या आईएसओ सी ++ मानक एसटीएल कंटेनर के अंदर वस्तुओं के किसी भी प्रकार के विनाश आदेश को जनादेश देता है?एसटीएल कंटेनर तत्व विनाश आदेश

  • std::list/std::vector/std::map तत्वों शुरुआत या कंटेनर के अंत से शुरू नष्ट कर रहे हैं?
  • क्या मैं std::map पर अपने तत्वों को std::pair में आंतरिक रूप से संग्रहीत कर सकता हूं ताकि एक जोड़ी में एक कुंजी उसके मूल्य (या इसके विपरीत) से पहले नष्ट हो जाए?

उत्तर

18
  1. मानक में निर्दिष्ट नहीं।
  2. हां, लेकिन इसका मतलब यह है कि इसके संबंधित मूल्य के बाद कुंजी नष्ट हो गई है।
+0

+1 ............ :) –

+0

# 2, हाँ, यही मेरा मतलब है, लिखा जाना चाहिए था दूसरी तरह के आसपास। क्या आप मुझे मानक के उस हिस्से में इंगित कर सकते हैं जो # 2 निर्दिष्ट करता है? –

+0

20.2.2/1, और यह टेरी के जवाब पर मेरी टिप्पणियों के साथ जुड़ता है। –

4
  1. अनिर्दिष्ट
  2. हाँ, आप भंडारण यह std :: जोड़े में तत्वों है std :: मानचित्र पर निर्भर कर सकता है, लेकिन मैं कुछ भी है जो एक एसटीडी की मुख्य भाग को निर्दिष्ट :: जोड़ी जा रहा है नहीं दिख रहा है एक मूल्य भाग से पहले नष्ट कर दिया।
+2

मानक जनादेश * पहला * और * दूसरा * डेटा सदस्य और उन्हें उस क्रम में दिखाता है, यदि, यदि आदेश आवश्यक है, तो निर्माण और विनाश आदेश भी निर्धारित करता है। –

+0

मुझे ऐसा कुछ भी नहीं मिला जो स्पष्ट रूप से कहता है कि आदेश आवश्यक है, लेकिन कुछ भी नहीं जो कहता है कि इसे अलग होने की अनुमति है। चूंकि वे सार्वजनिक सदस्य हैं और निश्चित रूप से "केवल प्रदर्शनी" को चिह्नित नहीं करते हैं, कार्यान्वयन के लिए छूट देने वाले अन्य खंडों में से कोई भी लागू नहीं होता है। तो, मुझे आवश्यक आदेश होने के पक्ष में गिरना होगा। –

+0

सी ++ 0x मानक ड्राफ्ट को देखते हुए, ऐसा लगता है कि मानक अनिवार्य है कि * पहले * * * * से पहले बनाया गया है। विशेष रूप से, 20.3.3.4 'जोड़ी(); प्रभाव: इसके सदस्यों को लागू करने के रूप में शुरू किया गया है: जोड़ी(): \t पहले(), दूसरा() {} 'मैंने पढ़ा है कि आदेश का अर्थ परिभाषित किया गया है, लेकिन मैं एक भाषा वकील को स्थगित कर दूंगा। –

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