之前用它不多,然后有一道题目要反转字符串,却发现忘记怎么用了。记下备用。
它是放在头文件<algorithm>里面的。
template <class BidirectionalIterator>
void reverse (BidirectionalIterator first, BidirectionalIterator last)
{
while ((first!=last)&&(first!=--last)) {
std::iter_swap (first,last);
++first;
}
}
使用:
在向量中:
#include <iostream> // std::cout
#include <algorithm> // std::reverse
#include <vector> // std::vector
int main () {
std::vector<int> myvector;
// set some values:
for (int i=1; i<10; ++i) myvector.push_back(i); // 1 2 3 4 5 6 7 8 9
std::reverse(myvector.begin(),myvector.end()); // 9 8 7 6 5 4 3 2 1
// print out content:
std::cout << "myvector contains:";
for (std::vector<int>::iterator it=myvector.begin(); it!=myvector.end(); ++it)
std::cout << ' ' << *it;
std::cout << '\n';
return 0;
}
输出: 9 8 7 6 5 4 3 2 1
在string类中:
#include<iostream>
#include<string>
#include<cstring>
#include<algorithm>
using namespace std;
int main()
{
string a;
while(cin>>a)
{
string b;
reverse(a.begin() ,a.end());
cout<<a<<endl;
b=a;
cout<<b<<endl;
}
return 0;
}
这个输出的a和b是相同的,说明这个函数把a的值也颠倒了。