C ++ Vector at / [] operator speed 또는 :: std :: vector :: at () vs operator [] << 와 같은 유사한 질문에서도 논의되는 경계 검사로 인해 at()
속도가 느리다는 것을 알고 []
있습니다 . 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 :: at를
사용해야 하는 경우 + vector :: operator [] 합니까?