I encountered a problem when tried compiling the following code:
#include
#include
#include
#include
You can't have statements like mapDial['A'] = 2;
at global scope. They must be inside a function.
When you declare a variable in global scope, you may only do initialization. E.g,
int a = 0;
You cannot do normal statements like:
a = 9;
So I would fix the code with:
#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;
}
You cannot execute arbitrary expressions at global scope, so
mapDial['A'] = 2;
is illegal. If you have C++11, you can do
map<char, int> mapDial {
{ 'A', 2 }
};
But if you don't, you'll have to call an initialisation function from main
to set it up the way you want it. You can also look into the constructor of map
that takes an iterator, and use that with an array in a function to initialise the map, e.g.
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();