Iterating over Model Rows
| Chapter 11. The TreeView widget |

## Iterating over Model Rows

`Gtk::TreeModel` provides a C++ Standard Library-style container of its children, via the `children()` method. You can use the familiar `begin()` and `end()` methods iterator incrementing, like so:

    auto children = refModel->children();
    for (auto iter = children.begin(), end = children.end(); iter != end; ++iter)
    {
      auto row = *iter;
      //Do something with the row - see above for set/get.
    }

If you always want to iterate across the entire range, much more succinct syntax is possible using C++'s range-based `for` loop:

    for (auto row: refModel->children())
    {
      //Do something with the row - see above for set/get.
    }

### Row children

When using a `Gtk::TreeStore`, the rows can have child rows, which can have their own children in turn. Use `Gtk::TreeModel::Row::children()` to get the container of child `Row`s:

    Gtk::TreeModel::Children children = row.children();

The View |  | The Selection