适配器,用于将任何迭代器转换为随机访问迭代器
adapter to convert any iterator to random access iterator
>我有任何不提供随机访问迭代器的容器,目标是创建一个适配器,该适配器接受此类迭代器的输入并为容器提供随机访问迭代器接口。
我不确定如何使用boost::iterator_facade
,因为它有点令人困惑:-/有一些关于堆栈溢出的例子,但我不确定如何使用它们(这里(
任何链接/示例都可能会有所帮助。(我阅读了boost
中的示例,考虑到我在boost
方面的经验,它们有点难以消化
你不想这样做。
也
- 使用具有"动态"缓存功能的通用范围库,就像 Eric Niebler 在他的 Ranges 提案中的
Container Ranges
概念一样 - 显式编码意图,例如,通过为您的函数创建一个标记调度重载,该标记将输入范围"重新引用"到随机访问算法的临时容器中
如果你真的坚持,是的,你可能可以实现你的想法,但我看不出除了隐藏运行时/存储成本之外有什么好处。特别是,需要保持一生都不是微不足道的。
稍微相关:Boost Spirit有一个boost::spirit::multi_pass
适配器,但只能从InputIterator
升级到ForwardIterator
(允许回溯(。
¹(当您有一个已经是随机访问范围的临时时,您会怎么做?您不能保留对它的引用,但也不应不必要地复制它。
相关文章:
- 是否应避免从非常量迭代器转换为常量迭代器?
- 为什么我的模板化函数需要从一个迭代器转换到另一个迭代器?
- C++ 如何为自己的迭代器类从迭代器转换为const_iterator?
- C++将向量迭代器转换为索引
- 从迭代器转换为变量的类型.(C++11 模板)
- 提高迭代器转换const_iterator
- 将字符串::迭代器转换为标准::字符串
- C++将迭代器转换为指针(并将 end() 转换为 nullptr)
- C++Spirit Boost:将输入迭代器转换为前向迭代器
- 将迭代器转换为指针,尤其是在end()处
- Deque索引迭代器转换
- 将多映射迭代器转换为随机访问迭代器
- 将迭代器转换为标量索引
- 无法将uint8_t矢量迭代器转换为常量 uint8_t *
- 如何将列表 STL 的迭代器转换为实例 (C++)
- 适配器,用于将任何迭代器转换为随机访问迭代器
- 将取消引用字符迭代器转换为 int C++
- 如何在C++中将矢量迭代器转换为 int
- c++入门第3章迭代器转换错误
- 将rend迭代器转换为end iteterator