2009-12-03 6 views
3

Que fait la boucle for? Je ne peux tout simplement pas le comprendre.Qu'est-ce que cela fait pour la boucle?

list<pair<int, double> > nabors; 
list<pair<int, double> >::iterator i; 

for (i = nabors.begin(); i != nabors.end() && dist >= i->second; i++); 
+1

Quelle partie de la boucle est source de confusion vous? – jalf

+1

J'ai posté cette question au nom d'un ami, je ne suis pas un gars C++ alors je viens de copier/coller ici et je lui ai montré la réponse ... Il a été impressionné par les réponses rapides de stackoverflow merci les gars –

+3

Rien est plus puissant ou dangereux qu'un esprit de ruche collective de nerds ennuyés. – Sneakyness

Répondre

25

Il est de trouver le premier élément nabors qui satisfait la condition

dist < i->second 

Si aucun élément remplit cette condition, l'itérateur i des points à nabors.end().

+0

@Dominic: Merci pour la correction; J'ai juste pensé à ça, je suis revenu pour le réparer, et j'ai trouvé que c'était déjà corrigé. :-) –

+0

@James - pas de problème! –

3

Peut-être que le code est plus clair avec std::find_if et un prédicat explicite?

class further_away_than 
{ 
    double dist; 
public: 
    further_away_than(double dist) : dist(dist) {} 

    bool operator()(const pair<int, double>& p) 
    { 
     return p.second > dist; 
    } 
}; 

#include <algorithm> 

// ... 

    i = find_if(nabors.begin(), nabors.end(), further_away_than(dist)); 

sais pas, je suis juste un fanboy :) STL