반복자도 상수성을 가질 수 있다.
비상수 반복자는 레퍼런스를 리턴하므로 *연산자와 함께 대입식의 좌변에 사용할 수 있지만, 상수 반복자는 상수 레퍼런스를 리턴하므로 대입식의 좌변에 놓아 값을 변경할 수 없고 오로지 읽을 수만 있다.
vector<int> vi;
vector<int>::const_iterator cit = vi.begin();
상수 반복자는 위와 같이 선언하며 다음의 특징을 가지고 있다.
그리고 위의 예제를 보면 비상수 반복자로 할당한 것이 보일텐데, 이것이 가능한 이유는 읽고 쓰기가 가능한 반복자를 받아 읽기 기능만 사용할 것이므로 전혀 위험하지 않기 때문이다.
하지만 반대로 비상수 반복자에 상수 객체의 반복자를 할당하려하면 에러가 날 것이다.
const vector<int> vi;
vector<int>::iterator vit = vi.begin(); // 에러
[STL] 반복자(7) - 역방향 (0) | 2023.08.23 |
---|---|
[STL] 반복자(5) - 속성 (0) | 2023.08.23 |
[STL] 반복자(4) - 임의 접근 반복자 (0) | 2023.08.23 |
[STL] 반복자(3) - 순방향, 양방향 반복자 (0) | 2023.08.23 |
[STL] 반복자(2) - 입출력 반복자 (0) | 2023.08.23 |