## NAME

ACE_Ordered_MultiSet_Iterator - Implement a bidirectional iterator over an ordered multiset. This class template requires that `operator semantics be defined for the parameterized type `T`, but does not impose any restriction on how that ordering operator is implemented.

## SYNOPSIS

    #include <ace/Containers.h>

    template<class T>
    class ACE_Ordered_MultiSet_Iterator
    {

` `public:` `friend class ACE_Ordered_MultiSet<T>;` `ACE_Ordered_MultiSet_Iterator (ACE_Ordered_MultiSet<T> &s);` `int next (T *&next_item) const;` `int first (void);` `int last (void);` `int advance (void);` `int retreat (void);` `int done (void) const;` `void dump (void) const;` `ACE_ALLOC_HOOK_DECLARE;` `private:` `ACE_DNode<T> *current_;` `ACE_Ordered_MultiSet<T> &set_;` `};`

## Initialization method.

    ACE_Ordered_MultiSet_Iterator (ACE_Ordered_MultiSet<T> &s);

## Iteration methods.

    int next (T *&next_item) const;

Pass back the `next_item` that hasn't been seen in the ordered multiset. Returns 0 when all items have been seen, else 1.

    int first (void);

Repositions the iterator at the first item in the ordered multiset Returns 0 if the list is empty else 1.

    int last (void);

Repositions the iterator at the last item in the ordered multiset Returns 0 if the list is empty else 1.

    int advance (void);

Move forward by one element in the set. Returns 0 when all the items in the set have been seen, else 1.

    int retreat (void);

Move backward by one element in the set. Returns 0 when all the items in the set have been seen, else 1.

    int done (void) const;

Returns 1 when all items have been seen, else 0.

    void dump (void) const;

Dump the state of an object.

    ACE_ALLOC_HOOK_DECLARE;

Declare the dynamic allocation hooks.

## AUTHOR

Doug Schmidt

## LIBRARY

ace