У меня есть любой контейнер, который не предоставляет итераторы произвольного доступа, и цель состоит в том, чтобы создать адаптер, который принимает входные данные таких итераторов и обеспечивает интерфейс итератора произвольного доступа к контейнеру.
Я не уверен, как использовать boost::iterator_facade
как это немного сбивает с толку: — / Есть несколько примеров переполнения стека, но я не уверен, как их использовать ( Вот )
Любая ссылка / пример может быть полезным. (я читал примеры в boost
их немного трудно переварить, учитывая мой опыт в boost
Вы не хотите делать это.
Или
Container Ranges
концепция из его предложения диапазоновЕсли вы действительно настаиваете, да, вы, вероятно, можете реализовать свою идею, но я не вижу, какую выгоду она получит, кроме сокрытия затрат времени выполнения / хранения. Особенно, это не будет тривиально с необходимостью сохранить жизнь вокруг.
Слегка связано: Boost Spirit имеет boost::spirit::multi_pass
адаптер, но это только обновления от InputIterator
в ForwardIterator
(чтобы разрешить возврат).
¹ (Что вы делаете, когда у вас есть временный объект, который уже является диапазоном произвольного доступа? Вы не можете сохранить ссылку на него, но также не должны копировать его без необходимости).