hdu 1251 统计难题 (Map的使用)

谁借莪1个温暖的怀抱¢ 2024-02-17 18:56 158阅读 0赞

对于map的一点了解(指定键查找的时候) :首先,会在map查找这个键值的项,map如果不包含某个键值,会返回map的end,然后它发现此键值没有找到(_Where == this->end())的话,会自动在末尾插入(this->insert(_Where)一个以你输入的键值和value的默认值(mapped_type())构成的对儿(pair),然后返回这个插入项的值(second,键是first)。而int的默认构造函数int(),就是0。 也就是时候,哪怕你没有对map进行插入操作,哪怕只是用[]判断了下返回值是否是0,map对象也会自动添加一项。

  1. #include<cstdio>
  2. #include<map>
  3. #include<string>
  4. #include<cstring>
  5. using namespace std;
  6. map<string,int>mp; //值(int)的初始值为0
  7. int main(){
  8. char str[12];
  9. while(gets(str)){ //不能用scanf("%s",str);因为scanf()不会读取换行,会跳过空白行,就没有长度为0的字符串,而gets会读取换行(但不会保存到数组中),存在长度为0的字符串
  10. int len=strlen(str);
  11. if(!len)break;
  12. else
  13. for(int i=len ;i>0;i--){
  14. str[i]='\0';
  15. mp[str]++;
  16. }
  17. }
  18. while(gets(str)){
  19. printf("%d\n",mp[str]);
  20. }
  21. return 0;
  22. }

发表评论

表情:
评论列表 (有 0 条评论,158人围观)

还没有评论,来说两句吧...

相关阅读

    相关 字典树 之 统计难题 hdu1251

    这一题本来打算存到一个字符串的数组里,到输入要查找的前缀后再去查找;结果去实现时发现如果要提前给的单词非常多的话每次查找都是比较慢的;交上去果断TLE.... 即使用了快排,