4
思路:利用set的特性,set是数学上的集合,每个元素最多出现一次,且其中的元素自动的从小到大排列,利用这一特性,可以统计有多少个不同的单词
#include<iostream> # include<cstring> #include<cstdio> # include<sstream> # include<string> #include<set> using namespace std; string wen,str; set<string> dict; int main() { while(getline(cin,wen)&&wen!="#") { stringstream ch(wen); //创造一个字符串流,在文本串中找单个单词 while(ch >>str) { dict.insert(str); //cout<<str<<endl; } cout<<dict.size()<<endl; dict.clear(); } return 0; } set总结 insert(key_value);将key_value插入到set中,返回值是pair< set< int>::iterator,bool>,bool标志着插入是否成功,而iterator代表插入的位置,若key_value已经在set中,则iterator表示的key_value在set中的位置。 lower_bound(key_value),返回第一个大于等于key_value的定位器 upper_bound(key_value),返回最后一个大于等于key_value的定位器 count(),用来查找set中某个某个键值出现的次数。这个函数在set并不是很实用,因为一个键值在set只可能出现0或1次,这样就变成了判断某一键值是否在set出现过了。 clear(),删除set容器中的所有的元素 empty(),判断set容器是否为空 max_size(),返回set容器可能包含的元素最大个数 size(),返回当前set容器中的元素个数 begin() end()