因此,为了创建一个Minimal。完整的、可验证的示例我在iterator
这里创建了一个玩具(我知道它并不完美,只是为了提出问题):
class foo : public iterator<input_iterator_tag, string> {
string _foo;
static const size_t _size = 13;
public:
const string& operator*() { return _foo; }
const foo& operator++() {
_foo += '*';
return *this;
}
const foo operator++(int) {
auto result = *this;
_foo += '*';
return result;
}
bool operator==(const foo& rhs) { return _foo.empty() != rhs._foo.empty() && _foo.size() % _size == rhs._foo.size() % _size; }
bool operator!=(const foo& rhs) { return !operator==(rhs); }
};
我读到InputIterator需要定义成员选择运算符。间接运算符很有意义,但成员选择运算符在这里让我感到困惑。如何实施成员选择运算符foo
?