所以(我知道這不是完美的,它只是在問問題的目的):迭代重載成員的選擇與間接運算符
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
實施會員選擇運營商?
順便說一下,前綴++運算符應該返回'foo&'而不是'const foo&',否則你將無法執行'++(++ i)' - 並且它缺少'return'語句。 –