算法入门经典-第五章 例题5-3 安迪的第一个字典
学会了一点<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.csdn.net/xw20084898/article/details/21939811)
4.最后运行记得是 在空行 ctrl+z +回车。(至于为什么,参考博文:http://blog.csdn.net/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; }