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
Post a Comment