I saw this nice graphic which classifies which STL container would suit based on different requirements of data such as:
-- Fixed Size Vs Variable size
-- Data of same tyme Vs different type
-- Sorted Vs unsorted data
-- Sequential Vs random access
http://plasmahh.projectiwear.org/cce_clean.svg
I notice in that image, that C++ STL there is no container which is
- Variable Size
- Heterogenous (data of different types).
Doesn't C++ have something for this?
PS - There can be many permutations made out the different properties of the containers and many others too might not be provided in STL.
Well generally C++ Containers are designed to hold objects of a single type using templates. If you want different types that are all derived from one type you can store a container of pointers (I guess you could also have a container of void* to anything...) e.g. std::vector<MyBaseType*>.
If you want completely unrelated types, you can store objects that can safely reference those other types, such as boost::any.
http://www.boost.org/doc/libs/1_47_0/doc/html/any.html
Some examples off the boost site:
boost::variant is similar, but you specify all the allowed types, rather than allowing any type in your container.
http://www.boost.org/doc/libs/1_47_0/doc/html/variant.html