Utiliser efficacement les itérateurs : résoudre les erreurs de calcul de distance
En C, les vecteurs offrent un moyen pratique de stocker des données. Pour les parcourir, des itérateurs sont utilisés. Cependant, une mauvaise utilisation des itérateurs peut conduire à des résultats incorrects.
Le problème
Considérez un scénario dans lequel vous souhaitez calculer la distance entre des points stockés dans un vecteur. Cependant, les résultats que vous obtenez diffèrent des valeurs attendues. Cela pourrait indiquer un problème dans la façon dont les itérateurs sont utilisés dans le vecteur.
Résoudre le problème
Lorsque vous accédez à un élément dans un vecteur à l'aide d'un itérateur, vous obtenez un référence à l'élément lui-même. Pour passer un pointeur vers l'élément à une fonction, vous devez déréférencer l'itérateur et prendre son adresse : &*ii.
Cependant, une meilleure pratique consiste à repenser la fonction de distance pour accepter des références au lieu de pointeurs :
<code class="cpp">float distance(const point& p1, const point& p2) { return sqrt((p1.x - p2.x)*(p1.x - p2.x) + (p1.y - p2.y)*(p1.y - p2.y)); }</code>
Avec cette modification, vous pouvez appeler la fonction de distance comme distance(ii,jj) dans la boucle.
Notes supplémentaires
Passer des vecteurs directement à la fonction de distance serait plus efficace que de déréférencer des itérateurs :
<code class="cpp">float distance(const vector<point>& vec, size_t i, size_t j) { // Your previous distance calculation code }</code>
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!