C++错误:'unordered_map'没有命名类型

use*_*171 13 c++ types unordered-map

据我所知,我正在做所有事情,我收到了错误消息:

error: 'unordered_map' does not name a type
error: 'mymap' does not name a type
Run Code Online (Sandbox Code Playgroud)

在我的代码中,我有:

#include <unordered_map>

using namespace std;

//global variable
unordered_map<string,int> mymap;
mymap.reserve(7000);

void main {
  return;
}
Run Code Online (Sandbox Code Playgroud)

我不知道这里可以找到什么....

编辑:当我更新我的声明时

std::tr1::unordered_map<string,int> mymap;
Run Code Online (Sandbox Code Playgroud)

我能够消除第一个错误,但是当我尝试保留时,我仍然得到第二个错误消息.

EDIT2:正如下面所指出的,保留必须进入main,我需要用flag编译

-std=c++0x
Run Code Online (Sandbox Code Playgroud)

但是,仍然存在与unordered_map相关的错误,即:

error: 'class std::tr1::unordered_map<std::basic_string<char>, int>' has no member named 'reserve'
Run Code Online (Sandbox Code Playgroud)

gon*_*aao 17

编译g++ -std=c++11(我的gcc版本是gcc 4.7.2)AND

#include <unordered_map>
#include <string>

using namespace std;

//global variable
unordered_map<string,int> mymap;

int main() {
  mymap.reserve(7000); // <-- try putting it here
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

  • 对于 GCC 4.6.2 应该是 `-std=c++0x` (2认同)

Bar*_*cal 5

如果您想支持<unordered_map>早于 c++11 的版本,请使用
#include<tr1/unordered_map>并以以下形式声明您的地图:-std::tr1::unordered_map<type1, type2> mymap
它将使用技术报告 1 扩展名以实现向后兼容性。