1.5 | 반복자에 쓰이는 연산
iterator 헤더에는 반복자에 쓰이는 연산을 정의한 네 가지 함수 템플릿이 정의되어 있다.
• advance()는 첫 번째 인수로 받은 반복자를 두 번째 인수로 지정한 숫자만큼 증가시킨다. 첫 번째 인수에는 입력 반복자 기능을 갖고 있는 반복자라면 어떤 것이든 쓸 수 있다. 두 번째 인수는 첫 번째 인수에 지정된 반복자가 양방향 반복자 또는 랜덤 액세스 반복자일 때 반복자를 감소시키는 음수도 지정할 수 있다. 반환값은 없다.
int data[]{1, 2, 3, 4, 5, 6}; auto iter = std::begin(data); std::advance(iter, 3); std::cout << "네 번째 원소: " << *iter << std::endl;
• distance()는 두 반복자가 지정한 범위에 있는 원소들의 개수를 반환한다.
int data[] {1, 2, 3, 4, 5, 6}; std::cout << "data에 있는 원소의 개수: " << std::distance(std::begin(data), std::end(data)) << std::endl;
• next()는 첫 번째 인수로 받은 반복자를 두 번째 인수로 지정한 숫자만큼 증가시킨 반복자를 반환한다. 첫 번째 인수에는 순방향 반복자 기능이 있는 반복자만 지정할 수 있다. 두 번째 인수는 기본값이 1로 지정되어 있다.
int data[]{ 1, 2, 3, 4, 5, 6 }; auto iter = std::begin(data); auto fourth = std::next(iter, 3); std::cout << "첫 번째 원소: " << *iter << " 그리고 네 번째 원소: " << *fourth << std::endl;