所以我有一些 C++ 代码用于 BFS 算法中的回溯节点。它看起来有点像这样:
typedef std::map<int> MapType;
bool IsValuePresent(const MapType& myMap, int beginVal, int searchVal)
{
int current_val = beginVal;
while (true)
{
if (current_val == searchVal)
return true;
MapType::iterator it = myMap.find(current_val);
assert(current_val != myMap.end());
if (current_val == it->second) // end of the line
return false;
current_val = it->second;
}
}
然而,这while (true)
似乎……对我来说很可疑。我知道这段代码有效,从逻辑上讲我知道它应该有效。但是,我无法摆脱在 中应该有一些条件的感觉while
,但实际上唯一可能的就是使用一个bool
变量来说明它是否完成。我应该停止担心吗?还是这真的很糟糕。
编辑:感谢大家注意到有办法解决这个问题。但是,我仍然想知道是否还有其他有效案例。