解题思路:
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; }