hozz létre egy bimap.h-t és másold bele ezt:
#ifndef BIMAP_H
#define BIMAP_H
#include <map>
template<class Key, class Value>
class BidirectionalMap
{
private:
//typedef -el csinálok egy "aliast" az std::map<Key, Value> típusra
typedef std::map<Key, Value> BaseType;
private:
//itt létrehozok egy BaseType típusú változót lásd előbb
BaseType base;
public:
//az insert fügvény hozzáfűz egy elemet a map-omhoz
void insert(const Key& key, const Value& value)
{
base[key] =value;
}
//túlterhelem az at függvényt
//az első at függvény akkor fut le, amikor Key típusú paraméterrel hívják meg, ekkor visszatér Value típusával és visszaadja a kulcshoz tartozó értéket
//ha a következő sor végén nem lenne const, akkor a c.at( 'S' ) == 83 a másik at-et hívná meg
Value at(const Key& key) const
{
return (*base.find(key)).second;
}
//a második at függvény akkor fut le, amikor Value típusú paraméterrel hívják meg, ekkor visszatér Key típusával és visszaadja az adott értékhez tartozó kulcsot
Key at(const Value& value) const
{
for (typename BaseType::const_iterator it=base.begin(); it!=base.end(); ++it)
{
if ((*it).second==value)
{
return (*it).first;
}
}
}
//megadja a map méretét
unsigned int size() const
{
return base.size();
}
};
#endif // BIMAP_H