c++ g++ 的 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
我是否遗漏了什么?
I am using g++ in Ubuntu
g++ (Ubuntu 4.4.3-4ubuntu5) 4.4.3
I have this code
#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;
}
when I compile using
g++ mycode.cc
I got error
error: 'unordered_map' was not declared in this scope
Am I missing something?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
如果您不想在 C++0x 模式下编译,请将 include 和 using 指令更改为
应该可以
If you don't want to to compile in C++0x mode, changing the include and using directive to
should work
在 GCC 4.4.x 中,您只需
#include
,并使用以下行进行编译:g++ -std=c++0x source.cxx
更多有关 GCC 中的 C++0x 支持 的信息。
编辑您的问题
您必须在插入时执行
std::make_pair(*s, true)
。此外,您的代码只会插入一个字符(通过
*s
取消引用)。您打算使用单个char
作为键,还是打算存储字符串?In GCC 4.4.x, you should only have to
#include <unordered_map>
, and compile with this line:g++ -std=c++0x source.cxx
More information about C++0x support in GCC.
edit regarding your problem
You have to do
std::make_pair<char, bool>(*s, true)
when inserting.Also, your code would only insert a single character (the dereferencing via
*s
). Do you intend to use a singlechar
for a key, or did you mean to store strings?