解题思路:
1.了解map是key和value键值对集合
2.键值对的类型可以是多样的,这里是key类型是char, value类型是int类型
3.了解map和数组之间的关系,数组名==map名,数组下标为map的key,数组[i]的值是map中的value
4.使用数组表示map的其中一个键值对,例如  map<char,int>mymap;    mymap[i]=mymap.second;
5.了解以上几点在配合代码注释,希望会更好理解 ,能帮到你很高兴。


#include <iostream>
#include<map>
using namespace std;
int main() {
     char str[100] = { 0 };
     cin.getline(str, sizeof(str));  
         map<char,int>maps;          //改变了原来key和value的类型和顺序
         for(int i=0;str[i]!='\0';i++){  //这里要打破以往思维模式,用i来作为条件,这里用数组中对应坐标的值作为循环条件
     if(isalpha(str[i]))//判断是否是字符
     {
         maps[str[i]]++;//这里是重点,也是理解难点,
                 //1.maps[str[i]]++等价于maps[str[i]]=maps[str[i]]+1   
                //2.maps[str[i]]++指的是取出map对应key的value值再累加   
         }
 }   
    for(auto it=maps.begin();it!=maps.end();it++)
    {
        cout<<it->first<<":"<<it->second<<endl;
    }    
    return 0;
}