reverse函数

函数原型,定义

std::reverse
定义于头文件 <algorithm>

(1)
template< class BidirIt >
void reverse( BidirIt first, BidirIt last );(C++20 前)

template< class BidirIt >
constexpr void reverse( BidirIt first, BidirIt last );(C++20 起)

(2)
template< class ExecutionPolicy, class BidirIt >
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 才参与重载决议。

可能实的现:

template<class BidirIt>
void reverse(BidirIt first, BidirIt last)
{
    while ((first != last) && (first != --last)) {
        std::iter_swap(first++, last);
    }
}

应用实例

#include <vector>
#include <iostream>
#include <iterator>
#include <algorithm>
 
int main()
{
    std::vector<int> v{1,2,3};
    std::reverse(std::begin(v), std::end(v));
    for(auto e : v) std::cout << e;
    std::cout << '\n';
 
    int a[] = {4, 5, 6, 7};
    std::reverse(std::begin(a), std::end(a));
    for(auto e : a) std::cout << e;
}

输出:
321
7654

猜你喜欢

转载自blog.csdn.net/weixin_44052726/article/details/85089630