2012-10-23 26 views

答えて

14

あなたはそう

mapDial['A'] = 2; 

が違法である、グローバルスコープで任意の式を実行することはできません。あなたがC++ 11を持っている場合は、

map<char, int> mapDial { 
    { 'A', 2 } 
}; 

を行うことができますが、そうでない場合は、あなたがそれを望むようにそれを設定するmainから初期化関数を呼び出す必要があります。イテレータを受け取るmapのコンストラクタを調べ、それを関数内の配列と共に使用して、マップを初期化することもできます。

map<char, int> initMap() { 
    static std::pair<char, int> data[] = { 
     std::pair<char, int>('A', 2) 
    }; 

    return map<char, int>(data, data + sizeof(data)/sizeof(*data)); 
} 

map<char, int> mapDial = initMap(); 
+0

ありがとうございました! – Lamian

+0

@ user1596792これがあなたの質問に答えた場合は、その横のチェックマークをクリックして回答としてマークします。 –

3

グローバルスコープでmapDial['A'] = 2;のようなステートメントを使用することはできません。それらは関数内になければなりません。

3

グローバルスコープで変数を宣言する場合、初期化のみを行うことができます。例えば、あなたが好きな、通常のステートメントで行うことはできません

a = 9; 

をだから私はしてコードを修正します:

#include <iostream> 
#include <cstdio> 
#include <cstring> 
#include <algorithm> 
#include <map> 

using namespace std; 

map<char, int> mapDial; 

int main() 
{ 
    mapDial['A'] = 2; 
    cout << mapDial['A'] << endl; 
    return 0; 
} 
+0

ありがとうございます! – Lamian

関連する問題