我使用一个变量map<string, int>
型A
,在我的程序string s
如下:我为什么会有编译错误,当我使用STL的地图?
map<string, int> A;
A["X"] = 10;
string s = "LXX";
int ans += A[s[2]];
但是当我运行的代码,编译错误出现:
no match for 'operator[]' (operand types are 'std::map<std::__cxx11::basic_string<char>, int>' and '__gnu_cxx::__alloc_traits<std::allocator<char> >::value_type {aka char}')
在一个char像s[2]
字符串不能是一个地图的索引?我应该如何正确使用它(A[s[2]]
)?
如果您希望我们与您问题的帮助,那你首先应该创建一个[最小,完整,可验证的示例](http://stackoverflow.com/help/mcve)表现出这个问题。然后编辑您的问题以包含该示例(对引起错误的行进行注释)以及编译器的* complete *输出,包括可能的信息说明。另请[请阅读如何提出好问题](http://stackoverflow.com/help/how-to-ask)。 –
缺少从你的程序一些背景...但我相信你得到的字符串映射的INT,对不对?所以只需A [s]应该得到你的int。 – BeerBaron
's [i]'是一个'char',而不是'std :: string',所以你有一个类型不匹配。 – hnefatl