#include <iostream>
#include <map>
using namespace std;
template <typename T>
class MultiMapa {
public:
typedef T ValueType;
//lub: typedef std::shared_ptr<T> ValueType;
private:
std::map<int, ValueType> m_map1;
std::map<string, ValueType> m_map2;
//...
public:
MultiMapa() {
}
void erase(ValueType value)
{
erase(m_map1, value);
erase(m_map2, value);
}
template<class Map, typename ValueType>
void erase(Map &map, ValueType value)
{
// implentacja dla konkretnej mapy
}
};
int main() {
MultiMapa<double> mapa;
//...wypelnienie
mapa.erase(2.0);
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8bWFwPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnRlbXBsYXRlIDx0eXBlbmFtZSBUPgpjbGFzcyBNdWx0aU1hcGEgewpwdWJsaWM6ICAgIAogICAgdHlwZWRlZiBUIFZhbHVlVHlwZTsKICAgIC8vbHViOiB0eXBlZGVmIHN0ZDo6c2hhcmVkX3B0cjxUPiBWYWx1ZVR5cGU7CnByaXZhdGU6ICAgIAogICAgc3RkOjptYXA8aW50LCBWYWx1ZVR5cGU+IG1fbWFwMTsKICAgIHN0ZDo6bWFwPHN0cmluZywgVmFsdWVUeXBlPiBtX21hcDI7CiAgICAvLy4uLgpwdWJsaWM6CiAgICBNdWx0aU1hcGEoKSB7CiAgICAgICAgCiAgICB9CiAgICAKICAgIHZvaWQgZXJhc2UoVmFsdWVUeXBlIHZhbHVlKQogICAgewogICAgICAgIGVyYXNlKG1fbWFwMSwgdmFsdWUpOwogICAgICAgIGVyYXNlKG1fbWFwMiwgdmFsdWUpOwogICAgfQoKICAgIHRlbXBsYXRlPGNsYXNzIE1hcCwgdHlwZW5hbWUgVmFsdWVUeXBlPgogICAgdm9pZCBlcmFzZShNYXAgJm1hcCwgVmFsdWVUeXBlIHZhbHVlKQogICAgewogICAgICAgIC8vIGltcGxlbnRhY2phIGRsYSBrb25rcmV0bmVqIG1hcHkKICAgIH0KCn07CgppbnQgbWFpbigpIHsKIAogICAgTXVsdGlNYXBhPGRvdWJsZT4gbWFwYTsKICAgIC8vLi4ud3lwZWxuaWVuaWUKICAgIG1hcGEuZXJhc2UoMi4wKTsKCXJldHVybiAwOwp9