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


소스코드

//코드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번째 코드를 많이 쓰던데 왜 그런가요?

  • 2016년 01월 24일에 작성됨

조회수 211


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 타입에서는 지원하지 않습니다.


로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close