gpt4 book ai didi

c++ - 删除列表中元素的问题

转载 作者:太空宇宙 更新时间:2023-11-03 10:34:34 25 4
gpt4 key购买 nike

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);
}

}

我正在这样做,它在 for 循环中崩溃了。我认为这是由于 erase();我在这里做错了什么吗?请就此提出建议

最佳答案

你应该在 else-block 中编写 itrSchedulerList++ 为:

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++;
}

这确保您不会将其递增到列表末尾之外。 erase() 可能会返回结束迭代器,它将在您的版本的 for 循环中递增。

关于c++ - 删除列表中元素的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6544038/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com