상세 컨텐츠

본문 제목

[STL] 반복자(6) - 상수 반복자

C++/C++ STL

by deulee 2023. 8. 23. 16:54

본문

반복자도 상수성을 가질 수 있다.

 

비상수 반복자는 레퍼런스를 리턴하므로 *연산자와 함께 대입식의 좌변에 사용할 수 있지만, 상수 반복자는 상수 레퍼런스를 리턴하므로 대입식의 좌변에 놓아 값을 변경할 수 없고 오로지 읽을 수만 있다.

 

vector<int> vi;
vector<int>::const_iterator cit = vi.begin();

상수 반복자는 위와 같이 선언하며 다음의 특징을 가지고 있다.

 

  • 가리키는 대상이 상수다.
  • 반복자 그 자체는 상수가 아니라서 전후로 이동이 가능하다.

그리고 위의 예제를 보면 비상수 반복자로 할당한 것이 보일텐데, 이것이 가능한 이유는 읽고 쓰기가 가능한 반복자를 받아 읽기 기능만 사용할 것이므로 전혀 위험하지 않기 때문이다.

 

하지만 반대로 비상수 반복자에 상수 객체의 반복자를 할당하려하면 에러가 날 것이다.

 

const vector<int> vi;
vector<int>::iterator vit = vi.begin(); // 에러

 

관련글 더보기