---
name: "ACE_RB_Tree_Iterator"
section: "3"
platform: "linux"
package: "libace-doc"
version: "5.0.7-4"
release: "Debian 2.2 (Potato)"
platforms: ["linux"]
url: "https://new.carta.tech/ACE_RB_Tree_Iterator"
---

# ACE\_RB\_Tree\_Iterator(3)

Implements an iterator for a Red-Black Tree ADT.

## NAME

ACE\_RB\_Tree\_Iterator -  Implements an iterator for a Red-Black Tree ADT.

## SYNOPSIS

```
#include <ace/RB_Tree.h>
template<class EXT_ID, class INT_ID, class COMPARE_KEYS, class ACE_LOCK>
class ACE_RB_Tree_Iterator :
  public ACE_RB_Tree_Iterator_Base<EXT_ID, INT_ID, COMPARE_KEYS, ACE_LOCK>
{
  public:
    ACE_RB_Tree_Iterator (
        const ACE_RB_Tree<EXT_ID, INT_ID, COMPARE_KEYS, ACE_LOCK> &tree,
        int set_first = 1
        );
    ~ACE_RB_Tree_Iterator (void);
    int advance (void);
    void dump (void) const;
    ACE_RB_Tree_Iterator<EXT_ID, INT_ID, COMPARE_KEYS, ACE_LOCK> & operator++ (
        void
        );
    ACE_RB_Tree_Iterator<EXT_ID, INT_ID, COMPARE_KEYS, ACE_LOCK> operator++ (
        int
        );
    ACE_RB_Tree_Iterator<EXT_ID, INT_ID, COMPARE_KEYS, ACE_LOCK> & operator-- (
        void
        );
    ACE_RB_Tree_Iterator<EXT_ID, INT_ID, COMPARE_KEYS, ACE_LOCK> operator-- (
        int
        );
    ACE_ALLOC_HOOK_DECLARE;
    int next (ACE_RB_Tree_Node<EXT_ID, INT_ID> *&next_entry) const;
    EXT_ID *key (void);
    INT_ID *item (void);
    int first (void);
    int last (void);
    int next (void);
    int previous (void);
    int is_done (void);
};
```

## Initialization and termination methods.

```
ACE_RB_Tree_Iterator (
    const ACE_RB_Tree<EXT_ID, INT_ID, COMPARE_KEYS, ACE_LOCK> &tree,
    int set_first = 1
    );
```

Constructor.  Takes an ACE\_RB\_Tree over which to iterate, and an integer indicating (if non-zero) to position the iterator at the first element in the tree (if this integer is 0, the iterator is positioned at the last element in the tree).

```
~ACE_RB_Tree_Iterator (void);
```

Destructor.

## ACE-style iteration methods.

```
int advance (void);
```

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

```
void dump (void) const;
```

Dump the state of an object.

## STL-style iteration methods.

```
ACE_RB_Tree_Iterator<EXT_ID, INT_ID, COMPARE_KEYS, ACE_LOCK> & operator++ (
    void
    );
```

Prefix advance.

```
ACE_RB_Tree_Iterator<EXT_ID, INT_ID, COMPARE_KEYS, ACE_LOCK> operator++ (
    int
    );
```

Postfix advance.

```
ACE_RB_Tree_Iterator<EXT_ID, INT_ID, COMPARE_KEYS, ACE_LOCK> & operator-- (
    void
    );
```

Prefix reverse.

```
ACE_RB_Tree_Iterator<EXT_ID, INT_ID, COMPARE_KEYS, ACE_LOCK> operator-- (
    int
    );
```

Postfix reverse.

```
ACE_ALLOC_HOOK_DECLARE;
```

Declare the dynamic allocation hooks.

```
int next (ACE_RB_Tree_Node<EXT_ID, INT_ID> *&next_entry) const;
```

Passes back the entry under the iterator.  Returns 0 if the iteration has completed, otherwise 1.  This method must be declared and defined in both the derived forward and reverse iterator classes rather than in the base iterator class because of a method signature resolution problem caused by the existence of the deprecated next (void) method in the derived forward iterator class.  When that deprecated method is removed, this method should be removed from the derived classes and placed in the base class.

## DEPRECATED methods. Please migrate your code to use the new methods instead

```
EXT_ID *key (void);
```

Accessor for key of node under iterator (if any). DEPRECATED

```
INT_ID *item (void);
```

Accessor for item of node under iterator (if any). DEPRECATED

```
int first (void);
```

Move to the first item in the iteration (and in the tree). DEPRECATED

```
int last (void);
```

Move to the last item in the iteration (and in the tree). DEPRECATED

```
int next (void);
```

Move to the next item in the iteration (and in the tree). DEPRECATED

```
int previous (void);
```

Move to the previous item in the iteration (and in the tree). DEPRECATED

```
int is_done (void);
```

Returns 0 if the iterator is positioned over a valid ACE\_RB\_Tree node, returns 1 if not. DEPRECATED: use the base class done method instead.

## AUTHOR

Chris Gill

## LIBRARY

ace
