【发布时间】:2015-02-18 01:04:39
【问题描述】:
我有任何不提供随机访问迭代器的容器,目标是创建一个适配器,接收此类迭代器的输入并为容器提供随机访问迭代器接口。
我不确定如何使用 boost::iterator_facade,因为它有点令人困惑:-/ 有一些堆栈溢出示例,但我不确定如何使用它们 (here)
任何链接/示例都可能会有所帮助。 (我阅读了boost 中的示例,考虑到我在boost 的经验,它们有点难以消化
【问题讨论】:
-
标准要求迭代器上的所有操作都需要摊销的常数时间。您不能将花费
O(N)时间的迭代器递增N,并神奇地将其转换为花费O(1)时间的迭代器来做同样的事情。结果不会满足随机访问迭代器的复杂性要求。 -
使用
std::advance能解决你的问题吗? -
同意,我确实了解迭代器和容器的设计和概念......但是即使性能最差也可以实现。如果是这样,我只想自己实现它,但我只需要任何想法/开始。谢谢!
-
只需要随机访问的迭代器范围(begin_it、end_it)。即使性能很差,底层实现也可以是任何东西。我不是在修改容器,只需要一个随机访问包装器。
标签: c++ boost boost-iterators