error: no match for ‘operator[]’ (operand types are ‘std::map<std::__cxx11::basic_string<char>, int>’ and ‘char’)
error: no match for ‘operator[]’ (operand types are ‘std::map<std::__cxx11::basic_string<char>, int>’ and ‘char’)
我想测试增量 ++
是否适用于 std::map
:
#include <bits/stdc++.h>
using namespace std;
int main()
{
map<string, int> map;;
map['1'] = 0;
map['1']++;
cout << map['1'] << endl;
return 0;
}
并且 Ì 得到标题的错误:
map['1'] = 0;
我不明白为什么
在 C++ 中 '1'
是一个字符,而不是字符串文字,并且您的映射有一个键 std::string
,这不是相同的类型。这就是 std::map::operator[]
给你编译器错误的原因,它是不匹配类型。
你需要 ""
来说明它是一个字符串文字。
map["1"] = 0;
另外,读一读:
- Why is "using namespace std;" considered bad practice?
我想测试增量 ++
是否适用于 std::map
:
#include <bits/stdc++.h>
using namespace std;
int main()
{
map<string, int> map;;
map['1'] = 0;
map['1']++;
cout << map['1'] << endl;
return 0;
}
并且 Ì 得到标题的错误:
map['1'] = 0;
我不明白为什么
在 C++ 中 '1'
是一个字符,而不是字符串文字,并且您的映射有一个键 std::string
,这不是相同的类型。这就是 std::map::operator[]
给你编译器错误的原因,它是不匹配类型。
你需要 ""
来说明它是一个字符串文字。
map["1"] = 0;
另外,读一读:
- Why is "using namespace std;" considered bad practice?