我在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
我错过了什么吗?
答案 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
作为密钥,还是打算存储字符串?