C++错误:'无序映射'没有命名类型

C++ error: 'unordered_map' does not name a type

本文关键字:类型 无序 错误 C++ 映射      更新时间:2023-10-16

据我所知,我做的每件事都是正确的,我收到了错误消息:

error: 'unordered_map' does not name a type
error: 'mymap' does not name a type

在我的代码中,我有:

#include <unordered_map>
using namespace std;
//global variable
unordered_map<string,int> mymap;
mymap.reserve(7000);
void main {
  return;
}

我看不出这里会缺少什么。。。。

编辑:当我将申报更新为时

std::tr1::unordered_map<string,int> mymap;

我可以消除第一个错误,但当我尝试保留时,我仍然会收到第二个错误消息。

编辑2:如下所述,预备队必须进入主队,我需要用标志进行编译

-std=c++0x

然而,似乎仍然存在与无序映射相关的错误,即:

error: 'class std::tr1::unordered_map<std::basic_string<char>, int>' has no member named 'reserve'

使用g++ -std=c++11(我的gcc版本是gcc 4.7.2(和编译

#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;
}

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

你不能execute arbitrary expressions at global scope,所以你应该放

mymap.reserve(7000);

内部主管道。

对于其他STL容器(如map和vector(也是如此。