C ++: почему не скомпилируется? - PullRequest
3 голосов
/ 29 июля 2011

У меня есть следующий код C ++, который я получил с сайта Google sparsehash:

#include <iostream>
#include <google/dense_hash_map>
#include <string.h>

using google::dense_hash_map;      // namespace where class lives by default
using std::cout;
using std::endl;
using ext::hash;  // or __gnu_cxx::hash, or maybe tr1::hash, depending on your OS

struct eqstr
{
  bool operator()(const char* s1, const char* s2) const
  {
    return (s1 == s2) || (s1 && s2 && strcmp(s1, s2) == 0);
  }
};

int main(void){
  dense_hash_map<const char*, int, hash<const char*>, eqstr> months;

  months.set_empty_key(NULL);
  months["january"] = 31;
  months["february"] = 28;
  months["march"] = 31;
  months["april"] = 30;
  months["may"] = 31;
  months["june"] = 30;
  months["july"] = 31;
  months["august"] = 31;
  months["september"] = 30;
  months["october"] = 31;
  months["november"] = 30;
  months["december"] = 31;

  cout << "september -> " << months["september"] << endl;
  cout << "april     -> " << months["april"] << endl;
  cout << "june      -> " << months["june"] << endl;
  cout << "november  -> " << months["november"] << endl;
}

Я получаю следующие ошибки:

using ext::hash

"ext" не был объявлен

dense_hash_map<const char*, int, hash<const char*>, eqstr> months;

  • 'hash' не был объявлен в этой области
  • Недопустимый аргумент шаблона 3
  • ожидаемый безусловный идентификатор перед символом ‘,’
  • ожидаемый инициализатор перед токеном ‘>’

и months.set_empty_key(NULL);

"месяцы" не были объявлены в этой области

Я немного новичок в C ++ и надеялся, что кто-нибудь может указать мне правильное направление.

Заранее большое спасибо,

Ответы [ 2 ]

5 голосов
/ 29 июля 2011

Может быть, вы попытаетесь заменить ext::hash на tr1::hash.

0 голосов
/ 29 июля 2011

Вы пытались заменить ext :: hash на __gnu_cxx :: hash или tr1 :: hash, как это предлагается в комментарии?

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