Std :: Accès au vecteur sans erreur malgré les limites
Dans std :: vector, l'accès à l'aide de l'opérateur [] ne déclenche pas d'erreur rapports, même lorsqu'un index est hors limites. Cela peut conduire à des résultats inattendus.
Considérons l'exemple suivant :
struct Element { std::vector<double> face; }; int main() { Element elm; // Insert 6 elements into elm.face for (int i = 0; i < 6; i++) elm.face.push_back(i); std::cout << elm.face.size() << std::endl; // Prints 6 std::cout << elm.face[6] << std::endl; // Prints an arbitrary number }
Comme indiqué, la taille du vecteur est de 6, mais l'accès à l'index inexistant elm.face[6] produit un résultat non -réponse d'erreur. Ce résultat est un comportement indéfini et la valeur renvoyée peut varier en fonction de la plate-forme et de la gestion de la mémoire.
En revanche, utiliser at() pour accéder aux éléments effectue une vérification des limites et lève une exception (std::out_of_range) lorsqu'un l'index est hors limites. Par conséquent, il est recommandé d'utiliser at() au lieu de Operator[] lorsque vous avez besoin d'une vérification des limites.
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!