Hi, I am a newbie to C++ & boost, I have questions on choosing the right boost container for my requirement. *A base class :* class Player { protected: std::string PlayerId; // real, winamp, Windows media, vlc, divx long capMask // capability mask public: Player(std::string param_Id, long param_Mask) { Id = param_Id; capMask = param_Mask; } }; *Two derived classes:* *Derived Class I:* class Port_Player:public Player { protected: bool IsTouchScreen; // True if touch screen based public: Port_Player(std::string param_Id, long param_Mask, bool TS) :Player(param_Id, param_Mask) { IsTouchScreen = TS; } } *Dervied Class II:* class Non_Port_Player:public Player { protected: long Browser; // Supported by firefox, IE etc public: Non_Port_Player(std::string param_Id, long param_Mask, long pBrowser) :Player(param_Id, param_Mask) { Browser = pBrowser; } } Questions I have: 1) As I would create objects of either Derived Class I or Derived Class II (which would be known to be only at runtime) and I need to add pointers to these objects in a container, I would like to know which container would suit best?? 2) Also, I should be able to perform lookups based on playerId field in the container,playerId would be an auto generated field for every object created (irrespective of Derived Class I or Derived class II), please advice on which container to choose in boost. BTW I had a look at the multi-index container, in which case I would be replicating data from the objects that I create, I am rather looking to see if I can avoid copying data rather than do lookups based on the object addresses in the container. Thanks in advance for any suggestions / advice on this. Regards Ramesh