Пользовательский итератор для класса на основе двух наборов - PullRequest
1 голос
/ 20 апреля 2010

У меня есть класс, который содержит два набора. Они оба содержат один и тот же тип ключа, но имеют разные операции сравнения.

Я хотел бы предоставить итератор для класса, который перебирает элементы обоих наборов. Я хочу начать с одного набора, затем, когда я увеличиваю итератор, указывающий на последний элемент первого набора, я хочу перейти к первому элементу второго набора. Как мне это сделать? Я хотел бы сохранить семантику двунаправленного итератора в std :: set, но если окажется, что реализовать прямой итератор намного проще, пусть будет так.

Я готов использовать библиотеку Boost Iterator, если это поможет.

1 Ответ

2 голосов
/ 20 апреля 2010

Я реализовал очень похожий итератор, используя библиотеки повышения:

Прочитайте здесь: http://www.boost.org/doc/libs/1_42_0/libs/iterator/doc/iterator_facade.html#a-basic-iterator-using-iterator-facade

Для прямого итератора вам потребуется реализовать оператор ++, чтобы изменить его на двунаправленный итератор, вам нужно реализовать оператор -.

Реализация зависит от вас, но все объясняется в документации.

...