shadowcw
Eikko
2016-03-08 02:03
采纳率: 0%
浏览 1.3k

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
    小灸舞 2016-03-08 02:27

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

    希望LZ能说的再清楚一点

    点赞 评论
  • qq423399099
    小灸舞 2016-03-08 02:28

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

     map<string, int> list;
    
    点赞 评论
  • John_ToStr
    John_ToDebug 2016-03-08 07:37

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

    点赞 评论
  • John_ToStr
    John_ToDebug 2016-03-08 07:38

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

    点赞 评论
  • John_ToStr
    John_ToDebug 2016-03-08 07:39

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

    点赞 评论

相关推荐