2.7.2.2 STL 반복자 멤버 함수 요구사항
STL은 반복자 카테고리에 따라 반복자 타입이 반드시 지원해야 하는 함수 멤버들을 정해놓았다. 이 함수들을 그룹으로 모아 놓으면 이해하기 쉬울 것이다. 첫 번째 그룹은 모든 반복자가 갖춰야 하는 것들이다. 모든 반복자 클래스가 갖고 있어야 하는 함수에는 기본 생성자, 복제 생성자, 할당 연산자가 있다. 경험에서 얘기한다면 이들 함수를 작성해야 한다면 명시적으로 소멸자도 작성하게 되는 게 보통이다. Iterator 타입에 대해 작성한다면 다음과 같은 함수를 작성해야 한다.
Iterator(); // 기본 생성자 Iterator(const Iterator& y); // 복제 생성자 ~Iterator(); // 소멸자 Iterator& operator=(const Iterator& y); // 할당 연산자
STL에 따르면 랜덤 액세스 반복자 클래스는 상등관계(equality) 연산자와 관계 연산자를 모두 정의해야 한다. 실제로는 utility 표준 라이브러리 헤더에서 제공하는 몇 가지 함수 템플릿을 사용하면 연산자 두 개만 정의하는 것으로 이런 작업을 해치울 수 있다.
bool operator==(const Iterator& y) const; bool operator<(const Iterator& y) const;
#include 지시자에 utility 헤더가 선언되어 있고, using 지시자로 std::rel_ops 네임스페이스가 선언되어 있다고 가정했다.
#include <utility> using namespace std::rel_ops;