10.4.3节练习

练习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 << " ";
	}
}





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值