c++ - Problem in erasing element in list -


struct scheduletaskinfo { unsigned int ntaskid;    __time64_t timestarttime; __time64_t timeendtime;  };  typedef list<scheduletaskinfo> schedulerlist;     schedulerlist::iterator itrschedulerlist;     for(itrschedulerlist = gschedulerlist.begin();itrschedulerlist != gschedulerlist.end();itrschedulerlist++) {     systemtime st;     getlocaltime(&st);      ctime ctsyatemtime(st);      if (itrschedulerlist->timeendtime == ctsyatemtime.gettime())     {          itrschedulerlist = gschedulerlist.erase(itrschedulerlist);               }  } 

i doing crashing in loop.i think due erase(); doing wrong here??please suggest me on

you should write itrschedulerlist++ in else-block as:

for(itrschedulerlist = gschedulerlist.begin();                      itrschedulerlist !=gschedulerlist.end();) {     systemtime st;     getlocaltime(&st);      ctime ctsyatemtime(st);      if (itrschedulerlist->timeendtime == ctsyatemtime.gettime())     {          itrschedulerlist = gschedulerlist.erase(itrschedulerlist);               }     else         itrschedulerlist++; } 

this ensures don't increment beyond end of list. erase() might return end iterator incremented in for loop in version.


Comments

Popular posts from this blog

c# - SharpSVN - How to get the previous revision? -

c++ - Is it possible to compile a VST on linux? -

url - Querystring manipulation of email Address in PHP -