rbegin()和rend()

c.rbegin() 返回一个逆序迭代器,它指向容器c的最后一个元素

c.rend() 返回一个逆序迭代器,它指向容器c的第一个元素前面的位置

但是注意rbegin,rend的类型和begin,end不一样

前者是反向迭代器(reverse_iterator),后者是迭代器(iterator)

对reverse_iterator执行递增将导致它递减

来看看实际使用:

#include<iostream>
#include<vector>
using namespace std;
int main()
{
	int a[5] = { 1,2,3,4,5 };
	vector<int> v(a, a + 5);

	for (auto r_it = v.rbegin(); r_it != v.rend(); ++r_it)
		cout << *r_it << " ";//5 4 3 2 1
	
	return 0;
}

来看看应用,大家知道find的功能,现在如果用find倒着找到第一个满足条件的迭代器呢?


#include<iostream>
#include<vector>

int main()
{

	/
	std::vector<int> v = { 1,2,3,4,5,6,2,8,9,10 };
	auto it1 = v.begin();
	auto it2 = std::find(v.begin(), v.end(), 2);
	std::cout << std::distance(it1, it2) << std::endl;//1

	/
	auto it3 = v.rbegin();
	std::cout << *it3 << std::endl;//10
	std::cout << *(++it3) << std::endl;//9
	/
	it3 = v.rbegin();//指向最后一个位置
	auto it4 = std::find(v.rbegin(), v.rend(), 2);
	std::cout << std::distance(it4, it3) << std::endl;//-3

	return 0;
}



评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值