c ++ unordered_map使用g ++编译问题

时间:2010-10-19 23:34:19

标签: c++ hashtable unordered-map

我在Ubuntu中使用g ++

  

g ++(Ubuntu 4.4.3-4ubuntu5)4.4.3

我有这段代码

#include<unordered_map>
using namespace std;

bool ifunique(char *s){
  unordered_map<char,bool> h;
  if(s== NULL){
    return true;
  }
  while(*s){
    if(h.find(*s) != h.end()){
      return false;
    }
    h.insert(*s,true);
    s++;
  }
  return false;
}

使用

进行编译时
g++ mycode.cc

我收到了错误

 error: 'unordered_map' was not declared in this scope

我错过了什么吗?

2 个答案:

答案 0 :(得分:19)

如果您不想在C ++ 0x模式下编译,请将include和using指令更改为

#include <tr1/unordered_map>
using namespace std::tr1;

应该有效

答案 1 :(得分:11)

在GCC 4.4.x中,您只需#include <unordered_map>,并使用此行进行编译:

g++ -std=c++0x source.cxx

有关C++0x support in GCC的更多信息。

修改您的问题

插入时必须std::make_pair<char, bool>(*s, true)

此外,您的代码只会插入一个字符(通过*s取消引用)。您打算使用单个char作为密钥,还是打算存储字符串?