逆序(反转)无论是在C或是C++中用的都特别多,常用于数组,字符串,容器等,其本身的函数参数也不复杂。
标准C中是没有recerse()函数的,这是C++的一个新增函数,使用需要包含头文件
#include <algorithm>
reverse函数用于反转在[first,last)范围内的顺序(包括first指向的元素,不包括last指向的元素),reverse函数没有返回值。
例如,交换vector容器中元素的顺序。
vector<int> vi ={1,2,3,4,5,6};
reverse(vi.begin(),vi.end()); //vi反转后为6,5,4,3,2,1
类似的,string类字符串
string str="Thank you";
reverse(str.begin(),str.end());//str结果为uoy knahT
这里小伙伴们可能有疑问,不是不包括last指向的元素么?
其实,begin()函数的作用是取vi的元素首地址,那么这里也要提到end()函数。和begin()不同的是,end()不是取vi的尾元素地址,而是取尾部元素的下一个地址。end()作为迭代器末尾标志,不储存任何元素。美国人思维比较习惯左闭右开。