我正在编写一个 Set 类,以便了解它们的实际工作方式,并尝试编写我自己的迭代器。据我了解,迭代器只是一个高级指针,它通过结构抽象化迭代。
话虽如此,我知道迭代器的重要部分是 ++ -- 和 * 操作。我已经成功地创建和测试了 in/decrement 运算符,但是当我尊重迭代器时,我正在概念化我需要返回的内容。
我是否返回它指向的对象?
这是我的 set.h 文件中的相关代码:
class Set{
private:
struct Elem {
ELEMENT_TYPE info;
Elem *prev, *next;
};
Elem *_head, *_tail;
int _size;
public:
//...
class Iterator{
private:
Elem * _cur;
public:
Iterator(){}
Iterator( Elem* );
Iterator operator++( int );
Iterator operator++();
Iterator operator--( int);
Iterator operator--();
bool operator==( const Iterator& rhs );
bool operator!=( const Iterator& rhs );
Elem operator*();
};
//...
};
就像我说的,我正在返回 Iterator 指向的“Elem”,对吗?
Set::Elem* Set::Iterator::operator*(){
return _cur;
}