Defined in header
<algorithm>
| ||
template<class BidirIt > void reverse( BidirIt first, BidirIt last ); | ||
Reverses the order of the elements in the range [first, last)
Behaves as if applying std::iter_swap to every pair of iterators first+i, (last-i) - 1
for each non-negative i < (last-first)/2
Parameters
first, last | - | the range of elements to reverse |
Type requirements | ||
-BidirIt must meet the requirements of BidirectionalIterator . | ||
-The type of dereferenced BidirIt must meet the requirements ofSwappable . |
Return value
(none)
Possible implementation
template<class BidirIt> void reverse(BidirIt first, BidirIt last) { while ((first != last) && (first != --last)) { std::iter_swap(first++, last); } } |
Example
Run this code
#include <vector> #include <iostream> #include <algorithm> int main() { std::vector<int> v({1,2,3}); std::reverse(std::begin(v), std::end(v)); std::cout << v[0] << v[1] << v[2] << '\n'; int a[] = {4, 5, 6, 7}; std::reverse(&a[0], &a[4]); std::cout << a[0] << a[1] << a[2] << a[3] << '\n'; }
注意reverse的第二个参数不是序列的最后一个元素的位置,而是此位置之后再向后一个,
Reverses the order of the elements in the range [first, last)
例子中,reverse 反转长度4的int数组,第二参数是&a[4](最后一个元素a[3]的后一个)