Maison > développement back-end > C++ > Pourquoi le `operator[]` de `std::vector` autorise-t-il l'accès hors limites sans erreur ?

Pourquoi le `operator[]` de `std::vector` autorise-t-il l'accès hors limites sans erreur ?

Barbara Streisand
Libérer: 2024-12-07 11:06:13
original
880 Les gens l'ont consulté

Why Does `std::vector`'s `operator[]` Allow Out-of-Bounds Access Without Error?

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
}
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal