Je sais que at()
c'est plus lent qu'à []
cause de sa vérification des limites, qui est également discutée dans des questions similaires comme C ++ Vector at / [] operator speed ou :: std :: vector :: at () vs operator [] << résultats surprenants !! 5 à 10 fois plus lent / plus rapide! . Je ne comprends tout simplement pas à quoi at()
sert la méthode.
Si j'ai un vecteur simple comme celui-ci: std::vector<int> v(10);
et que je décide d'accéder à ses éléments en utilisant at()
plutôt []
qu'en situation lorsque j'ai un index i
et que je ne suis pas sûr que ce soit dans les vecteurs limites, cela me force à l' envelopper avec try-catch bloquer :
try
{
v.at(i) = 2;
}
catch (std::out_of_range& oor)
{
...
}
bien que je puisse obtenir le même comportement en utilisant size()
et en vérifiant l'index par moi-même, ce qui me semble plus facile et très pratique:
if (i < v.size())
v[i] = 2;
Ma question est donc la suivante:
quels sont les avantages de l'utilisation de vector :: at sur vector :: operator [] ?
Quand dois-je utiliser vector :: at plutôt que vector :: size + vector :: operator [] ?