概述
Description:
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.
Here is my answer:
//cmp.h:
#include "string"
#include "cstring"
template<typename T>
bool cmp(T a, T b) {
return a == b;
}
template<typename T>
bool cmp(T* a, T* b) {
return *a == *b;
}
bool cmp(char a[], char b[]) {
return !strcmp(a, b);
}
And the test file:
//test.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;
}
最后
以上就是殷勤小蜜蜂为你收集整理的函数模板练习题——template cmp的全部内容,希望文章能够帮你解决函数模板练习题——template cmp所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复