2010-04-20 4 views
1

J'ai une classe qui contient deux ensembles. Ils contiennent tous deux le même type de clé mais ont des opérations de comparaison différentes.itérateur personnalisé pour une classe basée sur deux ensembles

Je voudrais fournir un itérateur pour la classe qui itère à travers les éléments des deux ensembles. Je veux commencer avec un ensemble, puis quand j'incrémente un itérateur pointant vers le dernier élément du premier ensemble, je veux aller au premier élément du deuxième ensemble. Comment puis-je faire cela? Je voudrais conserver la sémantique bidirectionnelle d'itérateur de std :: set, mais s'il s'avère que l'implémentation d'un itérateur vers l'avant est beaucoup plus facile, qu'il en soit ainsi.

Je suis prêt à utiliser la bibliothèque Boost Iterator si cela peut vous aider.

Répondre

2

Je mis en place un iterator très similaire en utilisant les bibliothèques Boost:

ont une lecture d'ici: http://www.boost.org/doc/libs/1_42_0/libs/iterator/doc/iterator_facade.html#a-basic-iterator-using-iterator-facade

Pour un iterator avant que vous aurez besoin de mettre en œuvre l'opérateur ++, pour changer cela à un itérateur bidirectionnel vous devez implémenter operator--.

La mise en œuvre est à vous, mais tout est expliqué dans la documentation.

Questions connexes