c ++ – subclassifying standard containers?

I have read so many times that one should not subclassify standard containers.
Are there any cases in which one can subclassify them?
For example, I have the following case:

Structure materials
{

std :: map <std :: string, std :: unique_ptr> materials;

void setFrom (const Database & db);
echo echo (std :: ostream &) const;

};

I want my material class to act as a map, so I have to add methods like

Material & getMaterial (std :: string & key);
void addMaterial (std :: string & key, Material & material);

what could have been avoided if I just subcased the container.

    Structure Materials: public std :: map <std :: string, std :: unique_ptr> materials;
{
void setFrom (const Database & db);
echo echo (std :: ostream &) const;
};

Is this something horrible to do?