3、STL之set
程序员文章站
2022-07-12 14:38:08
...
例题:
Andy’s First Dictionay UVA - 10815
大意:
输入一大串含有标点、空格的字符串。提取其中单词,放入set中,自动排序、删除重复,然后利用迭代器输出。
知识点:
set集合
#include<set>
set<string> dict;
dict.insert(buf);
string已经定义了小于运算符,所以支持在集合当中被sort
还有一些函数
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;
}
下一篇: 2、STL之vector