Как создать универсальный hashmap в C ++? - PullRequest
2 голосов
/ 19 декабря 2011

Как я могу создать общую хэш-карту в vc ++? Я использую Visual Studio и VC ++ в качестве варианта языка. Я хочу разделить мою реализацию на файлы заголовка (интерфейса) и cpp. заголовок:

template<class T1,class T2>
class Generic
{
  map<T1,T2> m1;

  public:

  // Standard constructors and destructors
  // -------------------------------------
     Generic ();
     virtual ~Generic ();

  // Copy constructor and equal operator
  // -----------------------------------
  Generic (Generic &);
  Generic& operator=(Generic&);

  void insert(const T1& key,const T2& value);
  T2 lookup(const T1&key);


};

и мой файл cpp:

MyGeneric::Generic()
{
}

//-----------------------------------------------------------------------------
// Generic : destructor
//-----------------------------------------------------------------------------
Generic::~Generic()
{
}

//-----------------------------------------------------------------------------
// Generic : copy constructor
//-----------------------------------------------------------------------------
Generic::Generic(Generic& original)
{
}

//-----------------------------------------------------------------------------
// Generic : equal operator
//-----------------------------------------------------------------------------
Generic& Generic::operator=(Generic& original)
{
  return *this;
}
void Generic::insert(const T1& key,const T2& value)
{
}
T2 Generic::lookup(const T1&key)
{
}

Мне интересно, я здесь ошибаюсь? Меня также смущает его использование, потому что я не определяю шаблон в моем файле cpp Это проблема? Как я могу удалить одно значение для соответствующего ключа в hashmap?

1 Ответ

2 голосов
/ 19 декабря 2011

Похоже, вам нужен тип вариант .Взгляните на вариант boost .Это позволяет хранить и извлекать любой тип, который вы хотите.Конечно, вы можете использовать его в сочетании с последовательностями или картами, такими как std::unordered_map.

. Реализация его самостоятельно довольно грязна.Поверьте, я пытался:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...