2010-04-20 2 views
1

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

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

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

ответ

2

я реализовал очень похожий итератор с помощью подталкивания библиотеки:

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

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

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