Um zu veranschaulichen, sagen wir, ich habe einen benutzerdefinierten Container als die Verwendung der STL std::vector
intern. Wenn ich def std::vector<char*>::iterator
bis my_container::iterator
tippe, gibt Dereferenzierung des Iterators eine char*
zurück. Mein benutzerdefinierter Container sollte jedoch seine Interna verbergen, was bedeutet, dass eine Dereferenzierung eine char
zurückgeben soll.Was ist der beste Ansatz zum Umbrechen eines STL-Containers in einem benutzerdefinierten Iterator?
Wie kann dies erreicht werden?
class my_container {
public:
typedef std::vector<char*> vector;
private:
vector vec_;
};
UPDATE:char*
ist ein Beispiel. Es bedeutet keine C-Saite; das Beispiel wäre klarer mit einem int
.
Auch würde ich gerne std::forward_iterator_tag
und std::iterator
als dies scheint ein Standard/aktuelle Ansatz.
Möglicherweise müssen Sie Ihre eigene Iterator implementieren, eine, die iteriert auf zwei Ebenen ('char *' der aktuellen Iterator und 'char' für Ihren Dereferenzierungsoperator). –
Woher kommt 'char', wollen Sie über jede Teilkette innerhalb des Vektors iterieren oder zweimal deneferenzieren? – Barry