std::vector<int> vec; const std::vector::iterator iter = vec.begin(); // iter 는 T * const 처럼 동작한다. *iter = 10; ++iter; // Error std::vector::const_iterator cIter = vec.begin(); // cIter 는 const T * 처럼 동작한다. *cIter = 10; // Error ++cIter;
Iterator 는 Pointer 를 본 뜬 것이기 때문에 기본적인 동작 원리가 T* 와 흡사하여
const 로 선안한다는 것은 Pointer 를 상수로 선언하는 것과 같다.
Iterator 가 자신이 카리키는 대상이 아닌 것을 가리키는 경우가 허용되지 않지만,
가리키는 대상 자체를 변경이 가능하다.
변경 불가능한 Object 를 가리키는 Iterator 가 필요하다면 const_iterator 를 사용하자.