#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 |