चेक इस कोड:क्या std :: list :: clear std :: list :: end iterator को साफ़ करें?
#include "stdafx.h"
#include <list>
int _tmain(int argc, _TCHAR* argv[])
{
std::list<int> mylist;
mylist.push_back(1);
std::list<int>::iterator i = mylist.end();
if(i == mylist.end())
printf("end is end\n");
mylist.clear();
if(i == mylist.end())
printf("never get here because Microsoft seems to "
"think the iterator is no longer safe.\n");
return 0;
}
अब, cplusplus.com के अनुसार यह एक समस्या नहीं होनी चाहिए, और रिलीज़ मोड में, मुझे लगता है कि यह ठीक है और वास्तव में किसी भी मुद्दे का कारण नहीं है, लेकिन डिबगिंग के रूप में असंभव हो जाता है यह मुझे जारी रखने के बिना बस बेल्स। कोई संकेतक?
दिलचस्प। मैंने सोचा था कि '.end' भी अमान्य है, लेकिन लेख विपरीत कहता है। यह दिलचस्प है कि http://ideone.com/Y338N8 इसे अपेक्षित रूप से निष्पादित करता है। +1 –
यह सही समझ में आता है क्योंकि जिस कोड को मैं विंडोज़ को पोर्ट करने की कोशिश कर रहा हूं उसे मैकोज़ और लिनक्स को लक्षित किया गया था। दोनों जीसीसी चल रहे हैं, जैसा कि विचार करता है। मुझे लगता है कि यह एक पुस्तकालय बग है। –