//C++程序设计语言 特别版
//第5章 课后题
//从输入读一系列的单词,使用Quit作为输入的结束单词。
//按照读入的顺序打印出这些单词,但同一个单词不要打印两次。
//在打印之前对单词排序
#include <iostream>
#include <algorithm>
#include <list>
#include <set>
#include <string>
#include <iterator>
using std::cin;
using std::cout;
using std::copy;
using std::cout;
using std::ostream_iterator;
using std::pair;
using std::string;
typedef std::set<string> WordSet;
typedef WordSet::iterator WordIter;
typedef std::list<WordIter> Index;
int main()
{
WordSet words;
Index input_order;
//唯一性的输入单词
for(string new_word; cin >> new_word,new_word!="Quit";){
pair<WordIter,bool>trace = words.insert(new_word);
if(trace.second){
input_order.push_back(trace.first);
}
}
//按照输入顺序唯一性的输出单词
copy(input_order.begin(),input_order.end(),ostream_iterator<string>(cout,"\n"));
std::cout << "hello \n" ;
//按照set<string>的默认顺序唯一性的输出单词
copy(words.begin(),words.end(),ostream_iterator<string>(cout,"\n"));
return 0;
}
//第5章 课后题
//从输入读一系列的单词,使用Quit作为输入的结束单词。
//按照读入的顺序打印出这些单词,但同一个单词不要打印两次。
//在打印之前对单词排序
#include <iostream>
#include <algorithm>
#include <list>
#include <set>
#include <string>
#include <iterator>
using std::cin;
using std::cout;
using std::copy;
using std::cout;
using std::ostream_iterator;
using std::pair;
using std::string;
typedef std::set<string> WordSet;
typedef WordSet::iterator WordIter;
typedef std::list<WordIter> Index;
int main()
{
WordSet words;
Index input_order;
//唯一性的输入单词
for(string new_word; cin >> new_word,new_word!="Quit";){
pair<WordIter,bool>trace = words.insert(new_word);
if(trace.second){
input_order.push_back(trace.first);
}
}
//按照输入顺序唯一性的输出单词
copy(input_order.begin(),input_order.end(),ostream_iterator<string>(cout,"\n"));
std::cout << "hello \n" ;
//按照set<string>的默认顺序唯一性的输出单词
copy(words.begin(),words.end(),ostream_iterator<string>(cout,"\n"));
return 0;
}