2011-01-17 4 views
7

(같은 종류의) 다른 iterator의 후속으로 임의의 종류의 iterator를 초기화하고 싶습니다. 다음 코드는 임의 접근 반복자와 함께 작동하지만, 앞으로 또는 양방향 반복자와 함께 실패iterator successor

Iterator i = j; 
++i; 

하지만 그건의 INIT-stament대로 작동하지 않습니다

Iterator i = j + 1; 

간단한 해결 방법은 for 루프. 이처럼 사용 후

template <typename Iterator> 
Iterator succ(Iterator it) 
{ 
    return ++it; 
} 

과 : 나는 다음과 같은 기능 템플릿을 사용할 수

Iterator i = succ(j); 

STL과 또는 부스트에서 그런 있나요, 또는 더 나은 솔루션이 I 알지 못해?

+1

당신은 'Iterator i = j; ++ i;는'for '루프 내에서 가능하지 않습니다 - 확장 할 수 있습니까? 'for' 루프에서 잘 작동해야합니다. –

+0

@Michael : "for (x; y; z)"에'x'를 넣고, 루프 몸체 자체에 넣지 않았습니다. – fredoverflow

+0

나는 본다; 그건 의미가 있습니다. –

답변

14

나는 next in Boost.Utility을 찾고 있다고 생각합니다. 이전 요소에 대한 반복자를 얻기 위해 prior도 있습니다.

업데이트 :

std::nextstd::prev을 도입 C++ (11).

+0

의 완성도를 위해,'prev'도 있습니다 : –

+0

@Matthiew M : 나는 '이전'을 의미한다고 생각합니다. 내 연결 고리에있어. 이제 저는 그것에 대한 언급을 제 대답에 추가했습니다. –

+0

'next'는 이제 C++ 11의 일부입니다. http://en.cppreference.com/w/cpp/iterator/next – alfC