For CGAL_Forward_container_from_circulator<C> the circulator has to fulfill at least the requirements for a forward circulator. The similar CGAL_Bidirectional_container_from_circulator<C> adaptor requires a bidirectional circulator in order to provide bidirectional iterators and the adaptor CGAL_Random_access_container_from_circulator<C> requires a random access circulator to provide random access iterators. In this case the adaptor implements a total ordering relation that is currently not required for random access circulators.
#include <CGAL/circulator.h>
|
|
| |
| |
| |
| |
| |
| |
| |
| |
|
| |
the resulting iterators will have a singular value.
| |
| |
the resulting iterators will have a singular value if the
circulator c is singular.
|
The bidirectional and random access container have similar constructors. The default construction is shown here to present the names.
|
|
|
| |
the start iterator. | ||
|
| |
the start const iterator. | ||
|
| the past-the-end iterator. |
|
| |
the past-the-end const iterator. |
The iterator and const_iterator types are of the appropriate iterator category. In addition to the operations required for their category, they have a member function current_circulator() that returns a circulator pointing to the same position as the iterator does.
Circulator c; /* c is assumed to be a bidirectional circulator. */ CGAL_Bidirectional_container_from_circulator<Circulator> container( c); reverse( container.begin(), container.end());
The random access iterator has to be able to compute the size of the
data structure. It is needed for the difference of a past-the-end
iterator and the begin iterator as well as for the family of the
add-operators where a possible wrap around might occur (this feature
beyond the iterator requirements is not supported for the moment).
Therefore, the constructor for the random access iterator choose the
minimal circulator for the internal anchor position. The minimal
circulator is part of the random access circulator requirements, see
Section .
These adaptor cannot be used for non-mutable circulators if the C++ compiler has the CGAL_CFG_NO_LAZY_INSTANTIATION bug[^1].