【发布时间】:2013-12-06 00:15:49
【问题描述】:
我的朋友向我介绍了哈希表,作为一种轻松将字符串与整数关联起来的方法,因此我尝试在我当前的项目中使用 std::unordered_map 实现它们。代码示例如下所示(为简洁起见,未显示完整功能,标题也不显示;我相信问题不存在):
unordered_map <string,int> world::gentypetable(){
unordered_map <string,int> hashtable;
hashtable.emplace("Normal",0);
hashtable.emplace("Fire",1);
hashtable.emplace("Water",2);
hashtable.emplace("Electric",3);
hashtable.emplace("Grass",4);
但是,当我尝试使用 g++ 3.4.4-999 编译此代码时,我收到以下错误:
error: 'class std::unordered_map<std::basic_string,<char>, int>' has no member named 'emplace'
我怀疑这是因为编译器已经过时了。是这个原因,还是另有原因?如果是由于编译器的原因,是否有替代语法可以用来避免将其更新到当前版本的漫长过程?
【问题讨论】:
-
如果您对编程非常感兴趣,我建议您更新您的工具链(包括编译器)。我不明白,为什么它很长,但是 g++ 3.4.4 现在已经很过时了,使用这个版本会很麻烦(4.8.2 是最新的版本)。
-
感谢大家的快速回答,我很高兴看到它只是编译器的一个问题。我使用该版本是因为我使用的是 Cygwin,并且直到今天我一直认为它是最新的。您建议我升级到哪个环境,或者在 Cygwin 中更新编译器可以正常工作? (这就是为什么我提到了一个漫长的升级;Cygwin 的网站说至少需要一个小时。)
-
对于 Windows 上的 gcc,我更喜欢 MinGW64。
-
好的,MinGW64是共识还是有其他意见?另外,MinGW64 是否允许我创建独立的 Windows 应用程序(我认为在 Cygwin 中无法实现)?
-
再次感谢大家提供的有用答案。
标签: c++ c++11 g++ unordered-map