Je sais que at()
est plus lent que []
en raison de son contrôle des limites, qui est également abordé dans des questions similaires telles que Vitesse de l'opérateur C++ Vector at/[] ou ::std::vector::at() vs operator[] << résultats surprenants ! !! 5 à 10 fois plus lent/rapide ! . Je ne comprends pas ce que le at()
La méthode est bonne pour.
Si j'ai un vecteur simple comme celui-ci : std::vector<int> v(10);
et je décide d'accéder à ses éléments en utilisant at()
au lieu de []
dans une situation où j'ai un indice i
et je ne suis pas sûr que ce soit dans les limites des vecteurs, cela m'oblige à l'envelopper dans un bloc try-catch :
try
{
v.at(i) = 2;
}
catch (std::out_of_range& oor)
{
...
}
bien que je sois capable d'obtenir le même comportement en utilisant size()
et de vérifier l'index par moi-même, ce qui me semble plus facile et plus pratique pour moi :
if (i < v.size())
v[i] = 2;
Donc ma question est :
Quels sont les avantages d'utiliser vecteur::at sur vecteur::opérateur[] ?
Quand dois-je utiliser vecteur::at plutôt que vecteur::taille + vecteur::opérateur[] ?