📅  最后修改于: 2023-12-03 15:29:54.030000             🧑  作者: Mango
在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()
函数来反转一个整型数组。