函数原型,定义
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
标签:std,last,reverse,C++,BidirIt,first From: https://www.cnblogs.com/ybqjymy/p/18096334