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

京公网安备 11010502036488号