0

我有任何不提供随机访问迭代器的容器,目标是创建一个适配器,该适配器接受此类迭代器的输入并为容器提供随机访问迭代器接口。

我不确定如何使用boost::iterator_facade,因为它有点令人困惑:-/ 有一些关于堆栈溢出的示例,但我不确定如何使用它们(这里

任何链接/示例都可能会有所帮助。(boost考虑到我在boost

4

1 回答 1

1

你不想这样做。

任何一个

  • 使用具有设施的通用范围库来进行“动态”缓存,例如 Eric Niebler 的Container RangesRanges 提案中的概念
  • 显式编码意图,例如,通过为您的函数创建一个标记分派的重载,将输入范围“具体化”为用于随机访问算法的临时容器

如果您真的坚持,是的,您可能可以实现您的想法,但是除了隐藏运行时/存储成本之外,我看不到它有什么好处。尤其是,需要保持生命周期并非易事。¹


稍微相关:Boost Spirit 有一个boost::spirit::multi_pass适配器,但只能从InputIteratorto升级ForwardIterator(以允许回溯)。

¹ (当你有一个已经是随机访问范围的临时文件时,你会怎么做?你不能保留对它的引用,但你也不应该不必要地复制它。)

于 2014-12-19T07:40:38.573 回答