Saya tahu itu at()
lebih lambat daripada []
karena pemeriksaan batasnya, yang juga dibahas dalam pertanyaan serupa seperti C ++ Vector pada / [] kecepatan operator atau :: std :: vector :: at () vs operator [] << hasil yang mengejutkan !! 5 hingga 10 kali lebih lambat / lebih cepat! . Saya hanya tidak mengerti untuk apa at()
metode itu baik.
Jika saya memiliki vektor sederhana seperti ini: std::vector<int> v(10);
dan saya memutuskan untuk mengakses elemennya dengan menggunakan at()
alih-alih []
dalam situasi ketika saya memiliki indeks i
dan saya tidak yakin apakah itu dalam batas vektor, itu memaksa saya untuk membungkusnya dengan try-catch blok :
try
{
v.at(i) = 2;
}
catch (std::out_of_range& oor)
{
...
}
meskipun saya dapat melakukan perilaku yang sama dengan menggunakan size()
dan memeriksa indeks saya sendiri, yang tampaknya lebih mudah dan nyaman bagi saya:
if (i < v.size())
v[i] = 2;
Jadi pertanyaan saya adalah:
Apa keuntungan menggunakan vector :: at over vector :: operator [] ?
Kapan saya harus menggunakan vector :: at daripada vector :: size + vector :: operator [] ?