学会了一点<set>的使用,而且知道了在<set>中原来会自动按从小到大的顺序排序。知道了这些,这个题就简单了,只需读入,之后再用迭代器访问着输就行了
另外,这个题需转换成小写字母,之后再用
stringstream ss(s);
while (ss>>buf) dict.insert(buf);插入就行了
stringstream ss(s);
while (ss>>buf) dict.insert(buf);插入就行了
知识点:
1.学会运用set容器;(有个小知识点,set容器,元素只能出现一次,并且插入可以从小到大排序)
2.学习字符函数库中常用的函数
3.学会stringstream(可参考这篇博文:http://blog.youkuaiyun.com/xw20084898/article/details/21939811)
4.最后运行记得是 在空行 ctrl+z +回车。(至于为什么,参考博文:http://blog.youkuaiyun.com/kevin_ut/article/details/8576740)
set是一个集合 和康托前辈的一样 集合中的元素不重复 且集合中的元素是有序的(自动有序化) TY菌介绍说其内部实质是一个平衡树
set不是数组 只能通过迭代器(iterator)把里面的元素倒出来 迭代器相当于是指针 扫描的是地址 因此输出的时候需要用*variation
#include <cstdio>
#include <cstring>
#include <set>
#include <iostream>
#include <sstream>
using namespace std;
set<int> dict;
int main()
{
//string s,buf;
int a;
while (cin>>a)
{
for (int i=0;i<1;i++)
// if (isalpha(s[i])) s[i]=tolower(s[i]); //isalpha()判断是否是字母 如果是就用头tolower()转换成小写 否则就转为空格 这样是为了字符串流重读入的时候能够把空格去掉
//else s[i]=' ';
// stringstream ss(a);
// while (ss>>buf)
dict.insert(a);
}
set <int> ::iterator it;
for (it=dict.begin();it!=dict.end();it++)
cout<<*it<<endl;
return 0;
}