请用C++编写一个reverse函数,要求与C++的标准库算法std::reverse具有相同功能。
时间: 2024-12-20 17:17:54 浏览: 19
在C++中,如果你想编写一个类似于 `std::reverse` 的自定义 `reverse` 函数,可以按照以下步骤实现。这个函数接受一个范围(如数组、向量等)并反转其元素。这里使用迭代器来遍历序列,这使得它更通用。
```cpp
#include <iostream>
// 自定义 reverse 函数模板,接收两个迭代器作为参数
template<typename ForwardIt>
void reverse(ForwardIt first, ForwardIt last) {
while(first != last - 1) { // 当前元素未到达结束位置
// 交换 current 和 next 元素
using std::iter_swap;
iter_swap(first++, last--); // 递增第一个,递减第二个
}
}
// 示例演示如何使用 reverse 函数
void print_and_reverse(int arr[], int size) {
std::cout << "Original array: ";
for(int i = 0; i < size; ++i) {
std::cout << arr[i] << " ";
}
// 反转数组
reverse(arr, arr + size);
std::cout << "\nReversed array: ";
for(int i = 0; i < size; ++i) {
std::cout << arr[i] << " ";
}
std::cout << "\n";
}
int main() {
int nums[] = {1, 2, 3, 4, 5};
print_and_reverse(nums, sizeof(nums) / sizeof(nums[0]));
return 0;
}
```
在这个例子中,`reverse` 函数通过迭代器 `first` 和 `last` 之间的元素进行逐个交换,直到它们相遇。`main` 函数中展示了如何使用该函数来反转一个整数数组。
阅读全文