适配器,用于将任何迭代器转换为随机访问迭代器

adapter to convert any iterator to random access iterator

本文关键字:迭代器 转换 随机 访问 任何 用于 适配器      更新时间:2023-10-16

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

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

任何链接/示例都可能会有所帮助。(我阅读了boost中的示例,考虑到我在boost方面的经验,它们有点难以消化

你不想这样做。

  • 使用具有"动态"缓存功能的通用范围库,就像 Eric Niebler 在他的 Ranges 提案中的Container Ranges概念一样
  • 显式编码意图,例如,通过为您的函数创建一个标记调度重载,该标记将输入范围"重新引用"到随机访问算法的临时容器中

如果你真的坚持,是的,你可能可以实现你的想法,但我看不出除了隐藏运行时/存储成本之外有什么好处。特别是,需要保持一生都不是微不足道的。


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

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