Bunun , / [] operatör hızında C ++ Vector veya :: std :: vector :: at () ile operatör [] << arasındaki benzer sorularda tartışılan sınır kontrolünden at()
daha yavaş olduğunu biliyorum << şaşırtıcı sonuçlar !! 5 ila 10 kat daha yavaş / daha hızlı! . Sadece yöntemin ne işe yaradığını anlamıyorum .[]
at()
Bunun gibi basit bir vektöre sahipsem: std::vector<int> v(10);
ve bir indeksim olduğunda durum at()
yerine kullanarak öğelerine erişmeye karar []
verirsem i
ve vektörlerin sınırları içinde olup olmadığından emin değilim, beni onu try-catch ile sarmaya zorluyor blok :
try
{
v.at(i) = 2;
}
catch (std::out_of_range& oor)
{
...
}
size()
Dizini kendi başıma kullanarak ve kontrol ederek aynı davranışı elde edebilmeme rağmen , bu benim için daha kolay ve daha uygun görünüyor:
if (i < v.size())
v[i] = 2;
Öyleyse sorum şu: vector :: at over vector :: operator []
kullanmanın avantajları nelerdir ? Vector :: size + vector :: operator [] yerine
ne zaman vector :: at kullanmalıyım ?