uva10815----set集合的使用
code:
/*
set 用法:set的含义是集合,它是一个有序的容器,里面的元素都是排序好的,支持插入,
删除,查找等操作,就 像一个集合一样。
所有的操作的都是严格在logn时间之内完成,效率非常高。
set和multiset的区别是:set插入的元素不能相同,但是multiset可以相同。
一定记住:里面的元素是按字典序来排好序的,所以一般需要以排好序的方式来打印,
说明要用到set集合,其他基本用的不多了,最多还是map集合
set的基本操作(前八个用的比较多):
insert() 在集合中插入元素
clear() 清除所有元素
count() 返回某个值元素的个数
empty() 如果集合为空,返回true
end() 返回指向最后一个元素的迭代器
lower_bound() 返回指向大于(或等于)某值的第一个元素的迭代器
erase() 删除集合中的元素
find() 返回一个指向被查找到元素的迭代器
get_allocator() 返回集合的分配器
equal_range() 返回集合中与给定值相等的上下限的两个迭代器
lower_bound() 返回指向大于(或等于)某值的第一个元素的迭代器
key_comp() 返回一个用于元素间值比较的函数
max_size() 返回集合能容纳的元素的最大限值
rbegin() 返回指向集合中最后一个元素的反向迭代器
rend() 返回指向集合中第一个元素的反向迭代器
size() 集合中元素的数目
swap() 交换两个集合变量
upper_bound() 返回大于某个值元素的迭代器
value_comp() 返回一个用于比较元素间的值的函数
set的基本操作:begin() 返回指向第一个元素的迭代器
*/
#include <cstdio>
#include <iostream>
#include <set>
#include <string>
#include<sstream>
#include <cctype>
using namespace std;
set<string> dict;
int main(){
string s,buf;
while(cin >> s){
for(int i=0;i < s.length();i++)
if(isalpha(s[i])) s[i] = tolower(s[i]);
else s[i] = ' ';
stringstream ss(s);
while(ss >> buf) dict.insert(buf);
}
for(set<string>::iterator it = dict.begin();it != dict.end();it++)
cout << *it<<"\n";
return 0;
}
浙公网安备 33010602011771号