我在尝试编译以下代码时遇到问题:
#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' does not name 类型错误。我是 c++ 的新手,真的不知道这里发生了什么。这里有人可以帮我解决这个问题吗?谢谢!!
最佳答案
你不能在全局范围内执行任意表达式,所以
mapDial['A'] = 2;
是非法的。如果你有 C++11,你可以这样做
map<char, int> mapDial {
{ 'A', 2 }
};
但如果您不这样做,则必须从 main
调用初始化函数以按照您想要的方式进行设置。您还可以查看带有迭代器的 map
的构造函数,并将其与函数中的数组一起使用以初始化 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();
关于c++ - 错误 "xxxx"没有命名类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13040212/