Descrption
Haoran is a “huge god” who loves C++ so much.One day he wants to implement a
template function cmp which compares any type of two elements.Now he
passes the mission to you all and hopes you can implement it and makes it
suitable to compare any two int,* double, float, char, string and any
two same type of pointers.**If the first parameter is equal to the second
one, then return true, elsewise, false.
You can be careful that:
(1)When comparing two int, double, float, char*, string , you should compare their values.
(2)When comparing two pointers, you should compare the values they point to.
(3)the cmp function should always return a boolean value.
出题人:劳思
Provided Codes
main.cpp
#include <iostream>
#include <string>
#include "cmp.h"
using std::cout;
using std::endl;
using std::string;
int main() {
int aInt = 1, bInt = 2;
double aDouble = 3.0, bDouble = 3.0;
char aChars[5] = "haha", bChars[5] = "hahb";
char taChars[6] = "trick", tbChars[6] = "trick";
string aStr = "haha", bStr = "aha";
int* aIntPtr = &aInt, *bIntPtr = &bInt;
cout << cmp(aInt, bInt)<< endl;
cout << cmp(aDouble, bDouble)<< endl;
cout << cmp(aChars, bChars)<< endl;
cout << cmp(taChars, tbChars)<< endl;
cout << cmp(aStr, bStr)<< endl;
cout << cmp(aIntPtr, bIntPtr)<< endl;
cout << cmp(&aDouble, &bDouble) << endl;
return 0;
}
Submission
cmp.h
#ifndef CMP_H
#define CMP_H
#include <string>
using std::string;
bool cmp(char *a,char *b){
string A(a),B(b);
return A==B;
}
template <typename T>
bool cmp(T a,T b){
return a==b;
}
template <typename T>
bool cmp(T *a,T *b){
return *a==*b;
}
#endif