
Hi, I would like an arbitrarily nested data structure, e.g. similar to std::vector< std::list<int> >, giving access to the elements of any of its subcontainers, but, at the same time, being a model of Container - in particular, having an iterator over all the elements in the last nesting level (int's in the previous example). Space/time efficiency is very important in my application. My solution would be to build a container adaptor similar to // vector of lists of ... of int typedef my_nested_container<std::vector, std::list, ..., int> nc_type; nc_type nc; (with type lists?) with an iterator adaptor that allows me to write something like: for (nc_type::iterator i = nc.begin(); i != nc.end(); ++i) // do smth with integer *i The nested container should also allow the user to modify each subcontainer and to iterate over the elements of a subcontainer, possibly without (much) overhead, e.g. // Iteration over the elements of one subcontainer for (nc_type::inner_iterator j = nc.inner_begin(); j != nc.inner_end(); ++j) // ... I have started to implement a prototype from scratch, but I am wondering whether I am reinventing the wheel. I think I can use boost::iterator_facade for my_nested_container::iterator and/or boost::pointer_container to build the nested structure internally (to minimize reallocation overhead upon dynamical change of the structure). Is there any other boost library I could take advantage from? I find that operations on a nested container are not completely trivial to implement (or even to define properly, think of add/remove in subcontainers which may themselves be nested containers) given its recursive nature, so I would be very glad to know that something like that is available off-the-shelf. I have found myself in need for such a data structure more often than not. Nicola