STL初步:集合set(安迪的第一个字典(Andy‘s First Dictionary))

蔚落 2022-11-27 03:29 59阅读 0赞

set就是数学上的集合——每个元素最多只出现一次。和sort一样,自定义类型也可以构造set,但同样必须定义“小于”运算符。

【问题描述】输入一个文本,找出所有不同的单词(连续的字母序列),按字典序从小到大输出。单词不区分大小写。
【样例输入】

Adventures in Disneyland
Two blondes were going to Disneyland when they came to a fork in the road. The sign read: “Disneyland Left.”
So they went home.

【样例输出】

a
adventures
blondes
came
disneyland

注:string已定义了“小于”运算符,直接使用set保存单词集合即可。输入时注意将所有非字母的字符变成空哥,然后利用stringstream得到各个单词。

  1. #include<set>
  2. #include<string>
  3. #include<sstream>
  4. #include<iostream>
  5. using namespace std;
  6. set<string> dict; //string集合
  7. int main()
  8. {
  9. string s,buf;
  10. while(cin>>s)
  11. {
  12. for(int i=0;i<s.length();i++)
  13. {
  14. if(isalpha(s[i]))
  15. {
  16. s[i]=tolower(s[i]);
  17. }
  18. else
  19. {
  20. s[i]=' ';
  21. }
  22. }
  23. stringstream ss(s);
  24. while(ss>>buf)
  25. {
  26. dict.insert(buf);
  27. }
  28. }
  29. for(set<string>::iterator it=dict.begin();it!=dict.end();++it)
  30. {
  31. cout<<*it<<endl;
  32. }
  33. return 0;
  34. }

注:set中元素已从小到大排好
iterator是迭代器,用法类似于指针

发表评论

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

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

相关阅读

    相关 第一字典

    前言 这个算法主要是介绍set,set最大的一个特点就是具有自动排序功能 问题描述 输入一个文本,找出所有不同的单词(连续的字母序列),按字典序从小到大输出。单词