题目:
编写一个函数模板,判断两个一维数组是否相同。模板参数是数组的类型。
代码:
#include <iostream>
using namespace std;
template <class T>
bool function(T a[], T b[], int number);
int main()
{
cout << "判断两个一维数组是否相同" << endl << endl;
int category;
cout << "1.int" << endl << "2.double" << endl << "3.char" << endl << "请输入你要判断的数组的类型:";
cin >> category;
if (category == 1)
{
int number;
cout << endl << "请输入这两个数组的元素个数:";
cin >> number;
int *a = new int[number];
int *b = new int[number];
cout << "请依次输入第一个数组的元素:(彼此之间用空格隔开,按回车键结束输入)";
for (int i = 0; i < number; ++i) cin >> a[i];
cout << "请依次输入第二个数组的元素:(彼此之间用空格隔开,按回车键结束输入)";
for (int i = 0; i < number; ++i) cin >> b[i];
bool judge = function(a, b, number);
cout << endl << "这两个一维数组";
if (judge == false) cout << "不";
cout << "相同" << endl << endl;
}
if (category == 2)
{
int number;
cout << endl << "请输入这两个数组的元素个数:";
cin >> number;
double *a = new double[number];
double *b = new double[number];
cout << "请依次输入第一个数组的元素:(彼此之间用空格隔开,按回车键结束输入)";
for (int i = 0; i < number; ++i) cin >> a[i];
cout << "请依次输入第二个数组的元素:(彼此之间用空格隔开,按回车键结束输入)";
for (int i = 0; i < number; ++i) cin >> b[i];
bool judge = function(a, b, number);
cout << endl << "这两个一维数组";
if (judge == false) cout << "不";
cout << "相同" << endl << endl;
}
if (category == 3)
{
int number;
cout << endl << "请输入这两个数组的元素个数:";
cin >> number;
char *a = new char[number];
char *b = new char[number];
cout << "请依次输入第一个数组的元素:(彼此之间用空格隔开,按回车键结束输入)";
for (int i = 0; i < number; ++i) cin >> a[i];
cout << "请依次输入第二个数组的元素:(彼此之间用空格隔开,按回车键结束输入)";
for (int i = 0; i < number; ++i) cin >> b[i];
bool judge = function(a, b, number);
cout << endl << "这两个一维数组";
if (judge == false) cout << "不";
cout << "相同" << endl << endl;
}
system("pause");
return 0;
}
template <class T>
bool function(T a[], T b[], int number)
{
for (int i = 0; i < number; ++i)
{
if (a[i] != b[i]) return false;
}
return true;
}