C++设计一个模板函数reverse,用于对一个一维数组元素实现逆序
时间: 2024-03-26 16:36:22 浏览: 71
好的,下面是实现代码:
```cpp
template<typename T>
void reverse(T arr[], int size)
{
for(int i = 0; i < size / 2; i++)
{
T temp = arr[i];
arr[i] = arr[size - i - 1];
arr[size - i - 1] = temp;
}
}
```
这个函数接收一个一维数组和数组大小作为参数,然后使用一个循环,将数组中的元素实现逆序。函数中涉及到了模板和数组的相关知识,可以用于对不同类型的数组进行逆序操作。
相关问题
C++设计一个模板函数reverse,用于对一个一维数组元素实现逆序并使用
好的,下面是一个使用示例:
```cpp
#include <iostream>
using namespace std;
template<typename T>
void reverse(T arr[], int size)
{
for(int i = 0; i < size / 2; i++)
{
T temp = arr[i];
arr[i] = arr[size - i - 1];
arr[size - i - 1] = temp;
}
}
int main()
{
int intArr[] = {1, 2, 3, 4, 5};
double doubleArr[] = {1.1, 2.2, 3.3, 4.4, 5.5};
char charArr[] = {'a', 'b', 'c', 'd', 'e'};
int size1 = sizeof(intArr) / sizeof(int);
int size2 = sizeof(doubleArr) / sizeof(double);
int size3 = sizeof(charArr) / sizeof(char);
reverse(intArr, size1);
reverse(doubleArr, size2);
reverse(charArr, size3);
for(int i = 0; i < size1; i++)
cout << intArr[i] << " ";
cout << endl;
for(int i = 0; i < size2; i++)
cout << doubleArr[i] << " ";
cout << endl;
for(int i = 0; i < size3; i++)
cout << charArr[i] << " ";
cout << endl;
return 0;
}
```
这个程序定义了一个模板函数 `reverse`,可以对不同类型的一维数组进行逆序操作。在主函数中分别定义了一个整型数组、一个双精度浮点型数组和一个字符型数组,并根据数组大小调用 `reverse` 函数对数组进行逆序操作。最后输出逆序后的数组元素。
注意,在使用模板函数时,需要在函数名后使用尖括号和类型参数来声明模板。例如,这里的 `reverse` 函数声明为 `template<typename T>`,其中的 `typename T` 就是类型参数。在调用函数时,需要把实际类型作为参数传入函数。例如,这里分别调用了 `reverse(intArr, size1)`、`reverse(doubleArr, size2)` 和 `reverse(charArr, size3)`,分别传入了整型数组、双精度浮点型数组和字符型数组作为参数。
C++设计一个模板函数reverse,用于对一个一维数组元素实现逆序并简单使用
好的,下面是一个简单的使用示例:
```cpp
#include <iostream>
using namespace std;
template<typename T>
void reverse(T arr[], int size)
{
for(int i = 0; i < size / 2; i++)
{
T temp = arr[i];
arr[i] = arr[size - i - 1];
arr[size - i - 1] = temp;
}
}
int main()
{
int arr1[] = {1, 2, 3, 4, 5};
double arr2[] = {1.1, 2.2, 3.3, 4.4, 5.5};
reverse(arr1, 5);
reverse(arr2, 5);
for(int i = 0; i < 5; i++)
cout << arr1[i] << " ";
cout << endl;
for(int i = 0; i < 5; i++)
cout << arr2[i] << " ";
cout << endl;
return 0;
}
```
这个程序定义了一个模板函数 `reverse`,可以对不同类型的一维数组进行逆序操作。在主函数中分别定义了一个整型数组和一个双精度浮点型数组,并直接调用 `reverse` 函数对数组进行逆序操作。最后输出逆序后的数组元素。
注意,在使用模板函数时,可以直接使用 `reverse(arr1, 5)` 和 `reverse(arr2, 5)` 这样的形式来调用函数,而不需要显式声明模板类型。这是因为编译器可以根据函数调用的实参类型来自动推导出模板类型。
阅读全文