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 am doing this it is crashing in for loop.I think it is due to erase();
Am I doing something wrong here??Please suggest me on this
You should write
itrSchedulerList++inelse-blockas:This ensures that you don’t increment it beyond end of the list.
erase()might return end iterator which will be incremented in theforloop in your version.