C:为什么不编译?

我从谷歌的sparsehash网站获得了以下C代码:

#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;
}

我收到以下错误:

使用ext :: hash

‘ext’ has not been declared

dense_hash_map< const char *,int,hash< const char *&gt ;,eqstr>个月;

  • ‘hash’ was not declared in this scope
  • template argument 3 is invalid
  • expected unqualified-id before ‘,’ token
  • expected initializer before ‘>’ token

和months.set_empty_key(NULL);

‘months’ was not declared in this scope

我有点像C菜鸟,希望有人能指出我正确的方向.

提前谢谢了,

解决方法:

也许你应该尝试用tr1 :: hash替换ext :: hash.

上一篇:C如何确定函数是否具有内联功能,实际上是?


下一篇:c – 根据Visual Studio中的Debug / Release配置自动#defines