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;
}

  

posted on 2014-12-09 00:10  lzm420241  阅读(94)  评论(0)    收藏  举报

导航