Intermediate types
| Chapter 3. Basics |

## Intermediate types

Some API related to gtkmm uses intermediate data containers, such as `Glib::StringArrayHandle`, instead of a specific Standard C++ container such as `std::vector` or `std::list`, though gtkmm itself now uses just `std::vector` since gtkmm 3.0.

You should not declare these types yourself. You should instead use whatever Standard C++ container you prefer. glibmm 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