2 shadowcw shadowcw 于 2016.03.08 10:03 提问

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 求大神指导

5个回答

qq423399099
qq423399099   Ds   Rxr 2016.03.08 10:27

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

希望LZ能说的再清楚一点

qq423399099
qq423399099 图片被删除了是什么意思。。。。
接近 2 年之前 回复
shadowcw
shadowcw 回复shadowcw: 大神求指导
接近 2 年之前 回复
shadowcw
shadowcw 回复小灸舞: n表示可以输入多组数据![图片说明](http://img.bbs.csdn.net/upload/201603/08/1457404563_968012.png)
接近 2 年之前 回复
qq423399099
qq423399099   Ds   Rxr 2016.03.08 10:28

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

 map<string, int> list;
shadowcw
shadowcw 回复小灸舞: 我现在是用手机上的 不能贴代码 不好意思啊
接近 2 年之前 回复
shadowcw
shadowcw 回复小灸舞: ![图片说明](http://img.bbs.csdn.net/upload/201603/08/1457404048_931864.png)
接近 2 年之前 回复
John_ToStr
John_ToStr   Rxr 2016.03.08 15:37

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

shadowcw
shadowcw 回复John_ToDebug: 谢谢大神
接近 2 年之前 回复
John_ToStr
John_ToStr   Rxr 2016.03.08 15:39

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

John_ToStr
John_ToStr   Rxr 2016.03.08 15:38

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

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!