私が知る限りすべてを正しく行っていて、エラーメッセージを受け取りました:
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番目のエラーメッセージが表示されます。
EDIT2:以下で指摘するように、予約はメインに移動する必要があり、フラグを付けてコンパイルする必要があります
-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;
}
サポートしたい場合は
<unordered_map>
c ++ 11より古いバージョンの場合#include<tr1/unordered_map>
および次の形式でマップを宣言します:-std::tr1::unordered_map<type1, type2> mymap
これは、下位互換性のためにテクニカルレポート1拡張子を使用します。
できませんexecute arbitrary expressions at global scope
なので、
mymap.reserve(7000);
メイン内。
これは、マップやベクターなどの他のSTLコンテナーにも当てはまります。