view:map的简单应用,注意多个空格的坑点;
#include<cstdio> #include<cstring> #include<algorithm> #include<cmath> #include<vector> #include<iostream> #include<map> #define max_n 2000000 using namespace std; char ch[max_n],s[max_n]; map<string,int> q; //map的对应关系; int main() { while(1) { q.clear(); //清空map ; gets(ch); if(ch[0]=='#') break; int len=strlen(ch); ch[len]=' '; int k=0,sum=0; bool flag=false; for(int i=0;i<=len;i++) { if(ch[i]!=' ') { s[k++]=ch[i]; flag=true; } else if(flag) { flag=false; s[k++]='\0'; //切记注意字符串结束标志; if(q[s]==0) { q[s]=1; sum++; } k=0; } } //map<string,int>::iterator it;//it是指针类型,迭代器把it定义成指针型结构体; //for(it=q.begin();it!=q.end();it++) //map的开始和结束; //cout<<it->first<<endl; //如果是字符串用c++,如果是其他的,直接printf; printf("%d\n",sum); //printf("%d\n",q.size()); map的大小,和sum值一样; } return 0; }