私はそれat()
が[]
その境界チェックのために遅いことを知っています、それは同様にC ++ Vector at / []オペレーター速度 または:: std :: vector :: at()対operator []のような同様の質問で議論されます<<驚くべき結果!! 5〜10倍遅い/速い!。私at()
はその方法が何に適しているのか理解できません。
このような単純なベクトルがある場合:インデックスがあり、ベクトルが境界にあるかどうかわからない状況ではなく、std::vector<int> v(10);
を使用してその要素にアクセスすることにした場合、try-catchで強制的にラップするブロック:at()
[]
i
try
{
v.at(i) = 2;
}
catch (std::out_of_range& oor)
{
...
}
私はsize()
自分でインデックスを使用して確認することで同じ動作を得ることができますが、これは私にとってより簡単で非常に便利です:
if (i < v.size())
v[i] = 2;
だから私の質問は:vector :: operator []よりvector :: at
を使用する利点は何ですか?
いつvector :: size + vector :: operator []ではなくvector :: atを使用すればよいですか?