0
我有任何容器不提供随机访问迭代器,目标是创建一个适配器,它接受输入这样的迭代器并向容器提供随机访问迭代器接口。适配器将任何迭代器转换为随机访问迭代器
我不知道如何使用boost::iterator_facade
,因为它是一个有点混乱: - /上有堆栈溢出一些例子,但我不知道如何使用它们(here)
任何链接/例子可能是很有帮助。 (我读的例子在boost
他们有点难以消化考虑我在boost
我有任何容器不提供随机访问迭代器,目标是创建一个适配器,它接受输入这样的迭代器并向容器提供随机访问迭代器接口。适配器将任何迭代器转换为随机访问迭代器
我不知道如何使用boost::iterator_facade
,因为它是一个有点混乱: - /上有堆栈溢出一些例子,但我不知道如何使用它们(here)
任何链接/例子可能是很有帮助。 (我读的例子在boost
他们有点难以消化考虑我在boost
经验,你不希望这样做。
要么
Container Ranges
concept from his Ranges proposal如果你真的坚持,是的,你可以实现你的想法,但我不明白它会获得什么,除了隐藏运行时/存储成本。尤其是,它不会是微不足道的需要,以保持一生around.¹
轻微相关:升压灵有boost::spirit::multi_pass
适配器,但只从升级到InputIterator
ForwardIterator
(允许回溯)。
¹(你做什么,当你有一个临时性的即已经是一个随机存取范围?你不能把对它的引用,但你也应该不必复制它。)
该标准要求所有的操作上一个迭代器采取摊销不变的时间。你不能采用一个迭代器,它用'N(N)'时间来增加'N',并且神奇地把它变成一个迭代器,它需要'O(1)'时间来做同样的事情。结果不会满足随机访问迭代器的复杂性要求。 – 2014-12-19 05:34:40
是否使用'std :: advance'会解决你的问题? – Anycorn 2014-12-19 05:41:01
同意了,我理解迭代器和容器的设计和概念......但即使性能最差也可能实现。如果是这样,我只想自己实现它,但我只需要任何想法/开始。谢谢! – KawKaw 2014-12-19 05:42:41