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