Intermediate types
| Chapter 3. Basics |

## Intermediate types

Some parts of the gtkmm API use intermediate data containers, such as `Glib::StringArrayHandle` instead of a specific Standard C++ container such as `std::vector` or `std::list`. You should not declare these types yourself -- you should use whatever Standard C++ container you prefer instead. gtkmm will do the conversion for you. Here are some of these intermediate types:

- `Glib::StringArrayHandle` or `Glib::ArrayHandle<Glib::ustring>`: Use `std::vector<Glib::ustring>`, `std::list<Glib::ustring>`, const char*[], etc.

- `Glib::ListHandle<Gtk::Widget*>`: Use `std::vector<Gtk::Widget*>`, `std::list<Gtk::Widget*>`, etc.

- `Glib::SListHandle<Gtk::Widget*>`: Use `std::vector<Gtk::Widget*>`, `std::list<Gtk::Widget*>`, etc.

Glib::ustring |  | Mixing C and C++ APIs