728x90
반복자를 사용할 때 얻는 이점
컨테이너의 요소들에 직접 접근하는 대신 반복자를 사용하는 경우 얻는 가장 중요한 이득은 다음과 같다.
- 직접 접근하는 방식은 클래스의 캡슐화를 무너뜨린다. 반면 반복자는 컨테이너의 구현 세부사항을 외부에 노출하지 않으면서도 효율적으로 순회 할 수 있다.
- 반복자는 순회 과정을 단순화한다. 대부분의 반복자는 배열의 인덱스나 포인터와 비슷하게 동작하기 때문에 순회할 때는 간단한 루프를 짜 반복자를 증가시켜가며 끝나는 조건과 비교하면 된다.
번외
postincrement(i++)와 preincrement(++i) 연산자의 차이는 뭘까?
preincrement 전치 증가 연산자
증가를 끝내고 난 후 피연산자의 값을 리턴. 포인터나 반복자를 증가시킨 후 그에 대한 참조를 리턴하면 됨.
postintcrement 후치 증가 연산자
증가를 끝내고 난 후 증가하기 전의 값을 리턴. 증가시키기 전의 값을 저장한 후 포인터 혹은 반복자를 증가시키고, 마지막 저장한 값을 리턴해야됨.
참고(https://stackoverflow.com/questions/1303899/performance-difference-between-iterator-and-iterator)
- Postincrement must return the value the iterator had BEFORE it was incrementing; so, that previous value needs to be copied somewhere before altering it with the increment proper, so it's available to return. The extra work may be a little or a lot, but it certainly can't be less than zero, compared to a preincrement, which can simply perform the incrementing and then return the just-altered value -- no copying // saving // etc necessary. So, unless you specifically MUST have postincrement (because you're using the "value before increment" in some way), you should always use preincrement instead. -
출처
출처는 도서 <게임 엔진 아키텍처>
번외에 대한 내용은 Scott Meyers의 <Effective C++>에 자세히 나온다고 함
728x90