Así que tengo un código C++ para los nodos de seguimiento en un algoritmo BFS. Se ve un poco como esto:¿Hay bucles sin fin en mal estado?
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;
}
}
Sin embargo, el while (true)
parece sospechoso ... a mí. Sé que este código funciona, y lógicamente sé que debería funcionar. Sin embargo, no puedo evitar la sensación de que debería haber alguna condición en el while
, pero realmente la única posible es usar una variable bool
solo para decir si está lista. ¿Debería dejar de preocuparme? O es esta realmente mala forma.
EDIT: Gracias a todos por notar que hay una forma de evitar esto. Sin embargo, me gustaría saber si hay otros casos válidos.
Esto también se discutió un poco aquí. http://stackoverflow.com/questions/885908/ – Copas
No lo sé. Son bucles sin fin en mal estado? –