STL算法可以与循环列表一起使用吗?

Nik*_*iou 6 c++ algorithm stl

为自定义列表创建符合STL的迭代器是非常平凡的.

然而,如果参考列表是循环列表,那么它似乎毫无意义,因为所有STL算法都在一个[first, last)范围和循环列表中运行first = last.

有没有标准/ consice方法来克服这个障碍,并且STL算法在"自制"循环列表上运行?

我假设定义符合STL的迭代器是实现此目标的第一步,但是也可以使用可在范围上运行的解决方案.


我需要为大量的"自制"结构实现这一点.我目前的解决方案是派生自然boost::iterator_facade后创建一个自定义range类(如Rudolph)并使用基于范围执行的任何算法.这仍有一些逻辑障碍,并希望看到有效的替代方案或解决方案.

isa*_*ndi 4

您将需要自定义迭代器,但解决方案仍然可以是基于范围的。一种可能性是begin()可以返回一个特殊标记的迭代器(flag initial=true),以便它知道它还没有完成循环。end()将返回一个该标志设置为 false 的迭代器。然后operator++将标志设置为 false,这样就begin()不会等于end()。您也可以使用不同的标记方案。