练习10.34 使用reverse_iterator逆序打印一个vector。
#include <iostream>
#include <iterator>
#include <vector>
#include <string>
#include <algorithm>
using namespace std;
int main()
{
vector<string> text{ "We","will","rock","it" };
for_each(text.rbegin(), text.rend(), [](const string &s) {cout << s << " "; });
cout << endl;
return 0;
}
练习10.35 使用普通迭代器逆序打印一个vector。
#include <iostream>
#include <vector>
#include <iterator>
#include <string>
using namespace std;
int main()
{
vector<int> val{ 0,1,2,3,4,5,6,7,8,9 };
auto iter = val.end();
--iter;
while (iter != val.begin()) {
cout << *iter << " ";
--iter;
}
cout << *iter << endl;
vector<string> text{ "we","will","rock","it" };
auto tter = text.end();
--tter;
while (tter != text.begin()) {
cout << *tter << " ";
--tter;
}
cout << *tter << endl;
return 0;
}
练习10.36 使用find在一个int的list中查找最后一个值为0的元素。
#include <iostream>
#include <list>
#include <algorithm>
#include <iterator>
using namespace std;
int main()
{
list<int> val{ 23,1,0,24,3,5,0,11};
auto iter = find(val.rbegin(), val.rend(), 0);
// 经检查可得是最后一个0.
for_each(iter.base(), val.end(), [](const int &i) {cout << i << " "; });
return 0;
}
练习10.37 给定一个包含10个元素的vector,将位置3到7之间的元素按逆序拷贝到一个list中。
#include <iostream>
#include <vector>
#include <list>
#include <algorithm>
#include <iterator>
using namespace std;
int main()
{
vector<int> val{ 0,1,2,3,4,5,6,7,8,9 };
list<int> obj;
// val.rend()是首元素之前的位置
// copy算法要和迭代器back_inserter结合使用
copy(val.rend() - 8, val.rend()-3, back_inserter(obj));
for (auto i : obj) {
cout << i << " ";
}
}