创建一个符合STL标准的迭代器以适应自定义列表是相当平凡的。然而,如果所涉及的列表是循环的,则似乎毫无意义,因为所有STL算法都在一个“[first,last)”范围内操作,在循环列表中,“first = last”。是否有一种标准/简明的方法来克服这个障碍,并使STL算法操作“自制”的循环列表?我假设定义符合STL标准的迭代器是实现此目标的第一步,但也可能存在操作范围的解决方案。
我需要为大量“自制”结构体实现这个功能。我的当前解决方案是从boost::iterator_facade
派生,然后创建一个自定义的range
类(例如 Rudolph's),并使用任何包装在基于范围执行的算法周围的算法。尽管如此,这仍然存在一些逻辑障碍,我希望看到其他替代方案或解决方案。
end()
,这才能正常工作。如果您能够做到这一点,并且从begin()
迭代可以到达那里,我就看不出有什么问题了。 - Salgarboost::circular_buffer
(http://www.boost.org/doc/libs/1_55_0/doc/html/circular_buffer.html)。 - tillaert