//练习10.34:使用reverse_iterator逆序打印一个vector
#include<iostream>
#include<iterator>
#include<string>
#include<algorithm>
#include<vector>
using namespace std;
int main(void)
{
vector<string> vec;
string ss;
while (cin >> ss)
{
vec.push_back(ss);
}
for (auto t_iter = vec.crbegin();
t_iter != vec.crend(); ++t_iter)
cout << *t_iter << " ";
cout << endl;
}
/*********************************************************************
//练习10.35:使用普通迭代器逆序打印一个vector
#include<iostream>
#include<iterator>
#include<string>
#include<algorithm>
#include<vector>
using namespace std;
int main(void)
{
vector<string> vec;
string ss;
while (cin >> ss)
{
vec.push_back(ss);
}
for (auto iter = prev(vec.cend()); iter != prev(vec.cbegin()); iter--)
cout << *iter << " ";
cout << endl;
}
/**********************************************************************/
//练习10.35&10.36
#include<iostream>
#include<list>
#include<iterator>
#include<algorithm>
#include<vector>
using namespace std;
int main(void)
{
list<int> list1{ 4, 5, 6, 7, 8, 9, 10 ,0,1,2};
auto opps=find(list1.crbegin(), list1.crend(),0);
cout << *opps<< endl;
vector<int> vec = { 1, 2, 3, 4, 5, 6, 7, 8, 9 ,10};
auto iter1 = vec.crbegin()+ 3;//相加往前面移
auto iter2 = vec.crend() -2;
list<int> list2(iter1, iter2);
for (auto ss : list2)
cout << ss << " ";
cout << endl;
}
//练习10.42
#include<iostream>
#include<list>
#include<algorithm>
#include<string>
using namespace std;
void elimdups(list<string> & list1)
{
list1.sort();//按字典序排列list,以便查找重复单词
list1.unique();
}
int main(void)
{
string word;
list<string> list1;
while (cin >> word)
list1.push_back(word);
elimdups(list1);
for (auto ss : list1)
cout << ss << " ";
cout << endl;
}