📜  C++中的std :: reverse()(1)

📅  最后修改于: 2023-12-03 15:29:54.030000             🧑  作者: Mango

C++中的std::reverse()

在C++中,可以使用std::reverse()算法来反转一个容器或数组中的元素。

函数定义
template< class BidirIt >
void reverse( BidirIt first, BidirIt last );

参数:

  • BidirIt first:指定要反转的第一个元素的迭代器。
  • BidirIt last:指定要反转的最后一个元素的下一个位置的迭代器。

注:

  • 反转区间 [first, last) 中的元素。最后一个元素之后的位置不包括在反转的范围内。
  • 此函数只能应用于双向迭代器 (BidirectionalIterator)。
示例
#include <algorithm>
#include <vector>
#include <iostream>

using namespace std;

int main()
{
    vector<int> v{ 1, 2, 3, 4, 5 };
    
    // 反转整个vector
    reverse(v.begin(), v.end());
    // 输出:5 4 3 2 1
    for(auto i : v) cout << i << ' '; 
    
    // 反转部分元素
    reverse(v.begin() + 1, v.end() - 1);
    // 输出:5 4 3 2 1
    for(auto i : v) cout << i << ' '; 
    
    return 0;
}
引申

除了可以用std::reverse()反转容器或数组中的元素外,我们还可以通过自己编写一个反转函数来实现同样的功能。

template<typename T>
void my_reverse(T* first, T* last)
{
    while((first != last) && (first != --last)) // 反转操作
    {
        std::swap(*first++, *last); 
    }
}

这里我们使用指针作为函数参数,my_reverse()函数可以将指针所指向的数组或容器进行反转。

int main()
{
    int arr[] { 1, 2, 3, 4, 5 };
    my_reverse(arr, arr + 5);
    // 输出:5 4 3 2 1
    for(int i : arr) cout << i << ' ';
    
    return 0;
}

此处我们演示了如何用my_reverse()函数来反转一个整型数组。

参考文献