왜 인덱스가 아니라 이터레이터를 사용하나요?

조회수 2771회

소스코드

//코드1
for (int i = 0; i < some_vector.size(); i++)
{
    //...
}

//코드2
for (some_iterator = some_vector.begin(); some_iterator != some_vector.end();
    some_iterator++)
{
    //...
}

보통 container를 쓸 때는 2번째 코드를 많이 쓰던데 왜 그런가요?

1 답변

  • 좋아요

    0

    싫어요
    채택 취소하기

    코드1이 더 효율적인 경우는 container.size()가 빠른 경우입니다. 그런데 container.size()가 빠른 경우는 container가 vector일 때뿐이고, 그 외의 listmap 등 나머지 container는 이 연산이 느리기 때문에 코드2처럼 씁니다.

    그리고 코드1은 반복문 안에서 T elem = some_vector[i];과 같이 접근해야 합니다. 이게 가능하려면 container가 operator[](std::size_t)를 지원해야 하는데 이것도 vector를 제외한 다른 container 타입에서는 지원하지 않습니다.

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)