そのため、BFS アルゴリズムでノードをバックトラッキングするための C++ コードがいくつかあります。次のようになります。
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
変数を使用して、それが完了したかどうかを示すことです。心配するのをやめるべきですか?それとも、これは本当に悪い形ですか?
編集:これを回避する方法があることに気づいてくれてありがとう。ただし、他に有効なケースがあるかどうかを知りたいです。