So im Interesse eines Minimal. Complete, Verifiable Example Schaffung ich ein Spielzeug geschaffen haben iterator
hier (ich weiß, es ist nicht perfekt, es ist nur für die Zwecke einer Frage):Iterator Überlastung Elementauswahl vs Indirektionsoperator
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); }
};
Ich habe gelesen, dass ein InputIterator den Member Selection Operator definiert haben muss. Der Indirection Operator ist sinnvoll, aber ein Member Selection Operator ist für mich verwirrend. Wie würde ein Member Selection Operator für foo
implementiert?
Übrigens, der Präfix ++ Operator sollte 'foo &' anstelle von 'const foo &' zurückgeben oder Sie können '++ (++ i)' nicht tun - und es fehlt die 'return' Anweisung . –