reverse函數可以反轉一個容器中的內容,包含在<algorithm>庫中。
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::vectorint 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 9std::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、復雜度
循環交換首尾元素。因此復雜度是線性的,并且循環半個數組長度。