별빛의 낙하지 :: STL 요소 만들어보기(3)

STL 요소 만들어보기(3)

C++ 2012. 11. 16. 04:46 Posted by byulbit

#include <xutility> // bidirectional_iterator_tag


namespace STD {


template<class C >

class ListIterator

{

public:

typedef typename C::elem_type elem_type; // 요소 타입

typedef typename C::node_type node_type;

typedef typename C::node_pointer_type node_pointer_type;

typedef typename C::iterator iterator;


typedef typename C::value_type value_type;

typedef std::bidirectional_iterator_tag iterator_category;


typedef typename C::difference_type difference_type;

typedef typename C::pointer pointer;

typedef typename C::reference reference;


ListIterator(node_type* node) {

_ptr = node;

}


bool operator!=(iterator& rhs) {

return (this->_ptr) != rhs._ptr;

}


bool operator==(iterator& rhs) {

return (this->_ptr) == rhs._ptr;

}


elem_type operator*() {

return (_ptr->_data);

}



node_type* operator++() {

return _ptr = _ptr->next;

}


node_type* operator++(int c) {

return _ptr = _ptr->next;

}

private:

node_type* _ptr;

};


}

'C++' 카테고리의 다른 글

STL 요소 만들어보기(4)  (0) 2012.11.16
STL 요소 만들어보기(2)  (0) 2012.11.16
STL 요소 만들어보기(1)  (0) 2012.11.16
[C++] template을 사용하여 연결리스트 구현  (0) 2012.11.16
[C++0x] Move Operator  (0) 2012.11.16