왜 인덱스가 아니라 이터레이터를 사용하나요?
조회수 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 답변
-
코드1이 더 효율적인 경우는
container.size()
가 빠른 경우입니다. 그런데container.size()
가 빠른 경우는 container가vector
일 때뿐이고, 그 외의list
나map
등 나머지 container는 이 연산이 느리기 때문에 코드2처럼 씁니다.그리고 코드1은 반복문 안에서
T elem = some_vector[i];
과 같이 접근해야 합니다. 이게 가능하려면 container가operator[](std::size_t)
를 지원해야 하는데 이것도vector
를 제외한 다른 container 타입에서는 지원하지 않습니다.
댓글 입력