C++ STL标准库:算法<algorithm> 逆转 reverse() reverse_copy()

std::reverse

简介:
将容器的序列变为当前的逆序。

函数原型

template <class BidirectionalIterator>
void reverse (BidirectionalIterator first, BidirectionalIterator last);

官方手册
http://www.cplusplus.com/reference/algorithm/reverse/


std::reverse_copy

简介:
reverse_copy() 算法可以将源序列复制到目的序列中,目的序列中的元素是逆序的。

函数原型

template <class BidirectionalIterator, class OutputIterator>
OutputIterator reverse_copy (BidirectionalIterator first, BidirectionalIterator last, OutputIterator result);

官方手册
http://www.cplusplus.com/reference/algorithm/reverse_copy/


使用示例:

#include <iostream>
#include <list>
#include <vector>
#include <algorithm>

using namespace std;

void print(int& ele)
{
	cout<<ele<<", ";
}

void main()
{
	int dim[]={1,2,3,4,5,6,7,8};
	vector<int> v1,v2;
	list<int> l1,l2;

	v1.assign(dim,dim+8);
	reverse(v1.begin(),v1.end());
	cout<<"vector v1: ";
	for_each(v1.begin(),v1.end(),print);
	cout<<endl;

	copy(v1.rbegin(),v1.rend(),back_inserter(l1));
	cout<<"list l1: ";
	for_each(l1.begin(),l1.end(),print);
	cout<<endl;

	reverse(v1.begin()+2,v1.end()-2);
	cout<<"vector v1: ";
	for_each(v1.begin(),v1.end(),print);
	cout<<endl;

	list<int>::iterator posf=l1.begin();
	list<int>::iterator pose=l1.end();
	advance(posf,2);
	advance(pose,-2);
	reverse(posf,pose);
	cout<<"list l1: ";
	for_each(l1.begin(),l1.end(),print);
	cout<<endl;

	reverse_copy(v1.begin(),v1.end(),back_inserter(v2));
	cout<<"vector v2: ";
	for_each(v2.begin(),v2.end(),print);
	cout<<endl;

	cout<<"list l1: ";
	reverse_copy(l1.begin(),l1.end(),ostream_iterator<int>(cout,", "));
	cout<<endl;
}

image-20201217193519149

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

超级D洋葱

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值