一杯清酒邀明月
天下本无事,庸人扰之而烦耳。

函数原型,定义

std::reverse

定义于头文件 <algorithm>

 1 (1)
 2 template< class BidirIt >
 3 void reverse( BidirIt first, BidirIt last );(C++20 前)
 4 
 5 template< class BidirIt >
 6 constexpr void reverse( BidirIt first, BidirIt last );(C++20 起)
 7 
 8 (2)
 9 template< class ExecutionPolicy, class BidirIt >
10 void reverse( ExecutionPolicy&``& policy, BidirIt first, BidirIt last );    (C++17 起)

1.反转 [first, last) 范围中的元素顺序
表现如同应用 std::iter_swap 到对于非负 i < (last-first)/2 的每对迭代器 first+i, (last-i) - 1
2.同 (1) ,但按照 policy 执行。此重载仅若 std::is_execution_policy_v<std::decay_t> 为 true 才参与重载决议。
可能实的现:

1 template<class BidirIt>
2 void reverse(BidirIt first, BidirIt last)
3 {
4     while ((first != last) && (first != --last)) {
5         std::iter_swap(first++, last);
6     }
7 }

应用实例

 1 #include <vector>
 2 #include <iostream>
 3 #include <iterator>
 4 #include <algorithm>
 5  
 6 int main()
 7 {
 8     std::vector<int> v{1,2,3};
 9     std::reverse(std::begin(v), std::end(v));
10     for(auto e : v) std::cout << e;
11     std::cout << '\n';
12  
13     int a[] = {4, 5, 6, 7};
14     std::reverse(std::begin(a), std::end(a));
15     for(auto e : a) std::cout << e;
16 }
17 
18 输出:
19 321
20 7654

 

posted on 2024-03-26 11:49  一杯清酒邀明月  阅读(92)  评论(0编辑  收藏  举报