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?