gpt4 book ai didi

c++ - 如何在不使用 goto 的情况下重写它

转载 作者:太空宇宙 更新时间:2023-11-04 14:35:33 24 4
gpt4 key购买 nike

我是 C++ 新手。我有以下形式的代码。我想知道如何在不使用 goto 的情况下重写它。如果我使用 break 代替它,那么我仍然会在每次通过这段代码时检查循环后面的 if 语句,即使我确实 break 我知道这个条件会失败,那么为什么要检查它呢?我能够想出的唯一解决方案是使这段代码成为一个函数,并用 return 替换 goto 并删除循环后面的 if 条件,只留下语句。这是可以接受 goto 的地方吗?

编辑:我还应该提到当我们找到一个相等的成员时我离开循环的原因,因为我不需要检查我的对象中的其余成员,因为我已经知道我们找到的那个是独一无二的我们正在迭代的对象,因此如果我们继续遍历其余的迭代器,将永远不会有匹配项。所以我就退出循环。

while (begIt != endIt)
if ((*begIt).member == someObject.member){
// Do these statements
goto someLabel; // then goto someLabel
}
++begIt;
}
if (begIt == endIt){ // We must have not found an equal member
// So do these statements
}
someLabel: // ...

最佳答案

使用算法和 lambda。

auto it = std::find_if(begin, end, [&](const A& a) {
return a.member == other.member;
});

if(it != end) {
// found
}
else {
// not found
}

关于c++ - 如何在不使用 goto 的情况下重写它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22572285/

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