1. ホーム
  2. c++

[解決済み] C++エラー:'unordered_map'は型名ではありません。

2022-02-15 15:59:09

質問

私が知る限りではすべて正しく行っているのですが、エラーメッセージが表示されます。

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

ここで何が足りないのかがわからない...。

EDIT: 私の宣言を更新すると

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

最初のエラーは解消できたのですが、予約しようとすると、やはり2番目のエラーメッセージが表示されます。

EDIT2: ご指摘の通り、reserveはmainに入る必要があり、フラグを立ててコンパイルする必要があります。

-std=c++0x

しかし、まだunordered_mapに関連するエラーがあるようです。

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