2009/02/19
[STL] vector 에서 [] 과 at() 의 차이점
vector 의 원소에 접근하는 방법은 배열의 접근 방법과 갈은 [] 를 이용하는 방법과 멤버 함수인 at() 을 이용하는 방법이 있다.
이 두가지 방법의 차이점은 첨자의 범위를 체크하는지 여부와 범위를 벗어난 접근일 경우 예외 발생 여부이다.
배열 접근 기호인 [] 에의한 접근은 첨자의 범위를 체크하지 않기 때문에 범위를 벗어난 접근을 시도할 경우 예외를 발생하지 않고 에러를 발생한다.
멤버함수 at() 를 이용한 접근은 첨자의 범위를 체크하여 벗어난 접근을 시도할 경우 std::out_of_range 예외를 발생 한다.
범위내의 접근을 보장할 경우 별도의 범위 체크가 필요 없으므로 []의해 원소에 접근하며
그렇지 않을 경우 at() 의한 접근으로 예외를 처리해 준다.
이 두가지 방법의 차이점은 첨자의 범위를 체크하는지 여부와 범위를 벗어난 접근일 경우 예외 발생 여부이다.
배열 접근 기호인 [] 에의한 접근은 첨자의 범위를 체크하지 않기 때문에 범위를 벗어난 접근을 시도할 경우 예외를 발생하지 않고 에러를 발생한다.
멤버함수 at() 를 이용한 접근은 첨자의 범위를 체크하여 벗어난 접근을 시도할 경우 std::out_of_range 예외를 발생 한다.
범위내의 접근을 보장할 경우 별도의 범위 체크가 필요 없으므로 []의해 원소에 접근하며
for ( int n = 0; n < (int)vInt.size(); ++n )
{
int a = vInt[ n ];
:
}
그렇지 않을 경우 at() 의한 접근으로 예외를 처리해 준다.
void foo( int n )
{
try
{
int a = vInt.at( n );
}
catch (std::out_of_range& e)
{
AfxMessageBox( _T("Catch the std::out_of_range") );
}
}
Original Post : http://neodreamer-dev.tistory.com/256
Labels:
at
,
C++
,
exception
,
std::out_of_range
,
STL
,
TistoryOldPost
,
Vector
Subscribe to:
Post Comments
(
Atom
)
No comments :
Post a Comment