2013-04-11 3 views
5

बस सी ++ सीखना, इसलिए मैं इसे सही ढंग से समझ नहीं सकता, लेकिन मैंने केवल पढ़ा है कि रेंज सम्मिलित फ़ंक्शन नए मानक (सी ++ प्राइमर 5 वें एड, cplusplus.com, cppreference.com, और इसका उपयोग करने के लिए सुझाव देने वाले विभिन्न उत्तरों के तहत एक पुनरावर्तक देता है इटरेटर वैधता बनाए रखने के लिए)।एसटीएल कंटेनर रेंज सम्मिलित कार्य सी ++ 11 के तहत शून्य लौट रहे हैं?

cppreference.com से:

template< class InputIt > 
iterator insert(const_iterator pos, InputIt first, InputIt last); 

हालांकि, यह है कि मैं कोशिश की है Cygwin जीसीसी और MinGW के हर संस्करण वापस आ गया है शून्य = C++ 11 -std का उपयोग कर। यहां तक ​​कि हेडर को देखकर ऐसा लगता है कि यह कैसे लिखा गया है, और ऐसा कुछ भी नहीं है जिसे मैं ठीक करने के लिए संशोधित कर सकता हूं।

मुझे क्या याद आ रही है?

यहां 'अध्याय अभ्यास का अंत' कार्य है जिसे मैं लिखने का प्रयास कर रहा था; एक दिया स्ट्रिंग के भीतर एक और के साथ एक स्ट्रिंग की जगह:

(मैं समझता हूँ के रूप में जिस तरह से यह लिखा है इरादा यह कार्य नहीं करेगा)

void myfun(std::string& str, const std::string& oldStr, const std::string& newStr) 
{ 
    auto cur = str.begin(); 
    while (cur != str.end()) 
    { 
     auto temp = cur; 
     auto oldCur = oldStr.begin(); 
     while (temp != str.end() && *oldCur == *temp) 
     { 
      ++oldCur; 
      ++temp; 
      if (oldCur == oldStr.end()) 
      { 
       cur = str.erase(cur, temp); 
       // Here we go. The problem spot!!! 
       cur = str.insert(cur, newStr.begin(), newStr.end()); 
       break; 
      } 
     } 
     ++cur; 
    } 
} 
+1

कौन सा * MinGW के संस्करण * आप उपयोग कर रहे हैं? कृपया * "हर संस्करण" * मत कहें। यह मदद नहीं करता है। विशिष्ट होना। – Nawaz

+0

आह, धन्यवाद। Mingw-get-inst-20120426.exe का उपयोग करके नवीनतम निर्माण, 4.6.2; i686-W64-mingw32-जीसीसी-dw2-4.8.0-win32_rubenvb; x86_64-W64-mingw32-जीसीसी-4.6.3-2 रिलीज-win64_rubenvb; और मिनजीडब्ल्यू-टीडीएम 4.7.1-dw2 – Habnab

+0

आज़माएं। जीसीसी '4.8.0'। यह नवीनतम है! – Nawaz

उत्तर

4

कोई संकलक कि पूरी तरह से अभी तक C++11 का समर्थन करता है नहीं है। gcc और clang के बाद के संस्करणों में नए मानक लागू किए गए हैं, लेकिन अभी भी ऐसे हिस्सों हैं जिन्हें करने की आवश्यकता है। दरअसल, gcc 4.7.0 के लिए basic_string.h को देखकर पता चलता है कि insert के इस संस्करण अभी तक अपडेट नहीं किया गया:

template<class _InputIterator> 
    void 
    insert(iterator __p, _InputIterator __beg, _InputIterator __end) { ... } 
+0

यदि यह सिर्फ मुझे चीजों को झुकाव नहीं है, तो यह निराशा को कम करता है, हालांकि मैं चाहता हूं कि मुझे एक समर्थित संस्करण मिल सके। सहायता के लिए धनयवाद! – Habnab

+2

@ हबनाब: विजुअल स्टूडियो 11 ने इसे ठीक से कार्यान्वित किया है। –

+0

@ बेंजामिन लिंडले: धन्यवाद। हालांकि, मैं कुछ कारणों से वीएस से बचने की कोशिश कर रहा हूं जो मेरे बाहर है। जब मैं भाषा सीखता हूं (vim और make/tup अब तक) टूल के न्यूनतम सेट तक चिपकने का प्रयास कर रहा हूं। मैं बस कुछ बिंदु पर दे सकता हूँ। बहुत मदद की सराहना करते हैं। – Habnab

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