c++ map本人小白 求指导

map 第一次出现的字符串用ok代替 接下来相同的字符后面加上出现次数
代码如下

#include#include#include#include#includeusing namespace std;int main(void){ string t; int n; while (cin>>n) { map list; for (int i=0; i>t; list[t]++; if(list[t]==1) cout<<"OK"<<endl; else cout<<t<<list[t]-1<<endl; } } return 0;}

我不明白if(list[t]==1) 为什么这样就可以表示字符出现第一次
如何重新计数字符出现次数的

本人刚刚接触map 求大神指导

不太懂LZ想表达的意思,那个while(cin>>n)是做什么的?n后面根本没用到
我猜LZ的map应该是map list;这样的吧
这样的话list[t]就能取出它对应的int的数值,可以用来判断是不是等于1

希望LZ能说的再清楚一点

楼主把代码截图或者放在代码页里面吧,刚才我也忘了放了

 map<string, int> list;

这跟map 的实现有关系,map默认如果你只初始化一个元素,那么另外一个会被初始化,整形0, 浮点型0.0, char 0 string "\0" 指针 因为没有初始化内存而无法读取数据

c++标准库中的map底层就这样实现的,

当然也仅仅是对整形的情况才能成立,否则也没法自加不是吗...