Ugrás a tartalomhoz Lépj a menübe
 


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

 

Hozzászólások

Hozzászólás megtekintése

Hozzászólások megtekintése

Nincs új bejegyzés.