尝试编译以下代码时遇到问题:
#include <iostream> #include <cstdio> #include <cstring> #include <algorithm> #include <map> using namespace std; map<char,int> mapDial; mapDial['A'] = 2; int main() { cout << mapDial['A'] << endl; return 0; }
编译器给了我一个错误:“mapDial”没有指定类型错误.我是新来的,真的不知道这里发生了什么.这里有人可以帮我解决吗?谢谢!!
解决方法
所以你不能在全局范围内执行任意表达式
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();