我在类中有一个方法LinkRepository,我正在检查向量数组中的重复条目Datalinks,它是类的成员.我遍历数组中的所有元素以检入Datalink* datalink数组中已存在的新条目.如果是,那么不要添加,只需退出循环.
void LinkRepository::SaveLink(Datalink* datalink) {
bool Exist = false;
for(vector<Datalink*>::iterator dl = Datalinks.begin(); dl != Datalinks.end(); ++dl)
{
if((strstr((*dl)->ParentID, datalink->ParentID) != NULL) && (strstr((*dl)->ChildID,datalink->ChildID) != NULL))
{
Exist = true;
dl = Datalinks.end();
}
}
if(!Exist)
{
Datalinks.push_back(datalink);
}
};
Run Code Online (Sandbox Code Playgroud)
我的程序似乎在语句的下一个循环中崩溃 dl = Datalinks.end();
我不知道它为什么会崩溃?
更换
dl = Datalinks.end();
Run Code Online (Sandbox Code Playgroud)
附:
break;
Run Code Online (Sandbox Code Playgroud)
退出循环
这是一个简单的例子来说明您的解决方案无法工作的原因:
int i = 0;
for (; i != 10; ++i)
{
i = 10;
}
Run Code Online (Sandbox Code Playgroud)
此循环将永远不会结束,因为在比较之前我将增加到11 i != 10