欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

3、STL之set

程序员文章站 2022-07-12 14:38:08
...

例题:

Andy’s First Dictionay UVA - 10815

大意:

输入一大串含有标点、空格的字符串。提取其中单词,放入set中,自动排序、删除重复,然后利用迭代器输出。

知识点:

set集合

set用法转自 sevencheng798

#include<set>
set<string> dict;
dict.insert(buf);

string已经定义了小于运算符,所以支持在集合当中被sort

string用法转自 Mr臣

还有一些函数
isalpha()
tolower()

利用stringstream提取单词

#include<string>
#include<sstream>
stringstream ss(s);
while(ss>>buf){
	dict.insert(buf);
}

利用iterator(用法类似于指针),输出set里的所有元素。

for(set<string>::iterator it = dict.begin();it!=dict.end();it++){
	cout << *it << endl;
}

(虽然已经大二下了,但还是第一次用C++的集合。。。简直离谱但我不会服输的)

知识点(注意事项)

表示单个空格字符时为:" "
set的输出一定要用迭代器set ::iterator it来完成

代码:

#include<iostream>
#include<string>
#include<sstream>
#include<set>
#include<cstdio>
using namespace std;
set<string> ans;
int main(){
 string s1,s2;
 while(cin>>s1){
  for(int i = 0;i<s1.length();i++){
   if(isalpha(s1[i])) s1[i] = tolower(s1[i]);
   else s1[i] = ' ';
  }
  stringstream ss(s1);
  while(ss>>s2){
   ans.insert(s2);
  }
 }
 for(set<string>::iterator it = ans.begin();it!=ans.end();it++){
  cout << *it << endl;
 }
 return 0;
}
相关标签: # STL c++ stl