转自https://blog.csdn.net/sunshihua12829/article/details/49929521
reverse函数可以反转一个容器中的内容,包含在库中。
1、函数原型
reverse函数等同于下面的代码:
template <class BidirectionalIterator>
void reverse (BidirectionalIterator first, BidirectionalIterator last)
{
while ((first!=last)&&(first!=--last))
{
std::iter_swap (first,last);
++first;
}
}
reverse函数使用iter_swap来交换两个元素。
2、参数:first、last
first和last是双向迭代器类型,reverse函数反转的范围是[first,last),所以包括first指向的元素,不包括last指向的元素。
3、返回值
reverse函数没有返回值。
4、例子
// reverse algorithm example
#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;
}
输出
myvector contains: 9 8 7 6 5 4 3 2 1
5、复杂度
循环交换首尾元素。因此复杂度是线性的,并且循环半个数组长度。