制作一个不存储value_type的InputIterator

时间:2017-01-15 15:09:22

标签: c++ iterator input-iterator

我正在创建一个模型restrict_xpaths=(["//div[@class='multi- page']/a[@class='aNxt']"])的类型。在我的应用程序中,“跳过前十万个元素”是一个合理的事情,创建InputIterator是昂贵的,所以我希望我的迭代器只在取消引用时创建value_type,而不是在增加时

我可以轻松地value_type按值返回operator*。但我不知道如何处理value_type。如果我的迭代器没有存储operator->,我该如何返回指针?

,我害怕指向临时指针的生命问题,并且不想被烧毁。

我考虑过不提供value_type,但我没有提供完整的operator->

1 个答案:

答案 0 :(得分:0)

我相信它可以通过迭代器的operator->按值返回代理对象。代理将具有单个value_type数据成员,并且其自己的operator->返回指向该数据成员的指针。

代理对象的生命周期与值对象的任何其他返回相同(就像我的operator*计划一样),所以虽然我确实有一个指向临时的指针,但在这种情况下它会被消耗掉代理对象被销毁。