2012-11-27 19 views
6

मुझे एक पोस्ट में मिला है कि एक इटरेटर का उपयोग करके कंटेनर से तत्वों को कैसे हटाया जाए। जबकि पुनरावृत्ति:ऑटो वैरिएबल और इसके प्रकार

for(auto it = translationEvents.begin(); it != translationEvents.end();) 
    { 
     auto next = it; 
     ++next; // get the next element 
     it->second(this); // process (and maybe delete) the current element 
     it = next; // skip to the next element 
    } 

क्यों autoauto next = it; में प्रकार के बिना किया जाता है?

मैं वीएस 10 का उपयोग करता हूं, सी ++ 11 नहीं!

+0

देखें [सी ++ 11 प्रकार अनुमान] (http://en.wikipedia.org/wiki/C%2B%2B11#Type_inference) – juanchopanza

+5

वीएस 10 में डिफ़ॉल्ट रूप से सी ++ 11 है। तो, आप सी ++ 11 का उपयोग करते हैं। –

उत्तर

12

auto का पहले से पहले सी ++ 11 में एक अलग अर्थ है। पिछले मानकों में, auto स्वत: संग्रहण अवधि के लिए एक भंडारण विनिर्देशक था - सामान्य भंडारण एक वस्तु है जहां इसे अपने दायरे के अंत में नष्ट कर दिया जाता है। सी ++ 11 में, auto कीवर्ड का उपयोग चर के कटौती के प्रकार के लिए किया जाता है। वेरिएबल का प्रकार इसे शुरू करने के लिए इस्तेमाल होने वाली अभिव्यक्ति से लिया जाता है, वैसे ही टेम्पलेट पैरामीटर टेम्पलेट फ़ंक्शन के तर्कों के प्रकार से घटाया जा सकता है।

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

कई सी ++ 11 फीचर्स डिफ़ॉल्ट रूप से वीसी 10 और auto में समर्थित हैं।

+0

क्या? यह vC++ 2010 में समर्थित है? मुझे नहीं पता था कि –

+0

क्या इसका मतलब यह है कि ऑटो अब भंडारण अवधि को संभालता है, या केवल इतना है कि यह बढ़ता है कि यह क्या करता है? – MrMesees

4

यह सी ++ के नए संस्करणों में एक छोटा सा हाथ है जो हमें क्लंकी इटरेटर नोटेशन से बचने की इजाजत देता है, क्योंकि संकलक अनुमान लगा सकता है कि वास्तविक प्रकार क्या होना चाहिए।

2

इसे Type Inference कहा जाता है, विवरण के लिए this question भी देखें। सी ++ 11 में नया, और विशेष रूप से इटरेटर और फ़ंक्शन बाइंडिंग के लिए कई लंबे और अनावश्यक कोडों को सरल बनाना है।

2

इसे type inference कहा जाता है। ऑटो वैरिएबल के प्रकार को प्रारंभकर्ता के प्रकार से घटाया जाता है।

उदा।, यह बड़ी और जटिल टेम्पलेट प्रकारों के लिए टाइप करने की मात्रा को कम करता है।

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