gpt4 book ai didi

C++ 跳出 vector 循环

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:16:19 26 4
gpt4 key购买 nike

我在类 LinkRepository 中有一个方法,我正在检查 vector 数组 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);
}
};

我的程序似乎在语句 dl = Datalinks.end(); 的下一个循环中崩溃了

我不知道它为什么会崩溃?

最佳答案

替换

dl = Datalinks.end();

与:

break;

退出循环

这里有一个简单的例子来说明为什么你的解决方案不起作用:

int i = 0;
for (; i != 10; ++i)
{
i = 10;
}

这个循环永远不会结束,因为在比较之前 i 将递增到 11 i != 10

关于C++ 跳出 vector 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11827746/

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