Syntaxe :
#include <vector> T& at( size_type loc ); const T& at( size_type loc ) const;
La méthode at() retourne une référence vers l'élément du vecteur situé à l'index loc. La méthode at() est plus sûre que l'opérateur [] parce qu'elle refusera un accès en dehors des limites vecteur en levant une exception.
Le code suivant illustre ce type d'erreur :
vector<int> v( 5, 1 ); for( int i = 0; i < 10; i++ ) { cout << "Element " << i << " is " << v[i] << endl; }
La boucle va lire plus loin que la fin du vecteur, ce qui est dangereux mais peut passer inaperçu et va de toutes façons donner des résultats faux et aléatoires. Le code suivant serait plus sûr :
vector<int> v( 5, 1 ); for( int i = 0; i < 10; i++ ) { cout << "Element " << i << " is " << v.at(i) << endl; }
Au lieu de lire les valeurs indéterminées à la fin du vecteur, la méthode at() va détecter que l'index est hors du vecteur et lever une exception out_of_range
.
Sujets connexes : operateur []