POJ 2418 Hardwood Species map水过,字典树的题目

来源:互联网 发布:js string 0 编辑:程序博客网 时间:2024/05/21 01:27

map默认初始化为0   按键字典序自动排序


让我们一起来分析一下while(getline(cin,line))语句
注意这里默认回车符停止读入,按Ctrl+Z或键入EOF回车即可退出循环。
在这个语句中,首先getline从标准输入设备上读入字符,然后返回给输入流cin,注意了,是cin,所以while判断语句的真实判断对象是cin,也就是判断当前是否存在有效的输入流。在这种情况下,我想只要你的电脑不中毒不发神经你的输入流怎么会没有效?所以这种情况下不管你怎么输入都跳不出循环,因为你的输入流有效,跳不出循环。
然而有些同学误以为while判断语句的判断对象是line(也就是line是否为空),然后想通过直接回车(即输入一个空的line)跳出循环,却发现怎么也跳不出循环。这是因为你的回车只会终止getline()函数的读入操作。getline()函数终止后又进行while()判断(即判断输入流是否有效,你的输入流当然有效,满足条件),所以又运行getline()函数,所以,你懂了吧。。。
 撒旦

#include <iostream>#include <cstdio>#include <cstring>#include <map>using namespace std;int main(){    int cnt = 0;    map<string,int> q;    map<string,int> :: iterator t;    string s;    while(getline(cin,s)){        q[s]++;        cnt++;    }    for(t = q.begin();t!=q.end();t++){        printf("%s %.4f\n", t->first.c_str(), (double)(t->second)*100.0/cnt);    }    return 0;}


0 0
原创粉丝点击