2011-01-22 3 views
1

그래서 클래스 할당으로 나는 std::vector를 재 구현하고있어, 난에 대한 프로토 타입을 선언에 문제가있어 :std iterator를 반환하는 함수 프로토 타입을 선언하는 방법은 무엇입니까?

iterator insert (iterator position, const T& x); 
내 반복자 클래스의 템플릿이

template<typename T> 
class VectorIterator : public std::iterator<std::input_iterator_tag, T> 

템플릿과 같은

내 벡터 클래스에 대한 모양은 다음과 같습니다

template<typename T> 
class Vector 

어떻게 삽입 할 프로토 타입을 012를 반환 할 수 있습니까? 내 자신의 VectorIterator 클래스 대신이 필요합니까? 물론 내 자신의 VectorIterator 클래스의 인스턴스를 반환 할 것입니다.

+1

'input_iterator_tag '가 아닌'vector' 클래스에'random_access_iterator_tag'를 사용해야합니다. –

답변

4

해당 함수는 std::iterator을 반환하지 않습니다. std::vector<T, Alloc>::iterator을 반환합니다. 당신은 당신의 VectorVectorIterator을 형식 정의를해야합니다

template <typename T> 
class Vector { 
    typedef VectorIterator<T> iterator; 
}; 

이것은 insert 함수의 반환 유형입니다. std::vector 사양의 iteratorconst_iterator에 대한 참조는 제공해야하는 typedef에 대한 것입니다.

관련 문제