HM173 具体化比对
HM173 具体化比对
来源: 第 173 集 模板-模板的局限性
难度: 普及-
时间限制: 1s
空间限制: 64MB
题目描述
函数模板很通用,但不是万能的。对两个 T 做 a = b 时,若 T 是数组,数组之间不能直接赋值;对两个 T 做 a > b 或 a == b 时,若 T 是自定义类型,编译器不知道该比姓名、年龄还是别的字段,通用模板会在实例化时失败。
有两种出路:在自定义类型里重载运算符;或者为该类型提供**具体化**模板。具体化版本会优先于通用模板被调用。学习模板主要是为了以后会用标准库里别人写好的模板,不必自己到处发明模板。
请实现:
- 通用函数模板
myCompare(T &a, T &b):用==比较,相等返回true,否则false。内置类型、string等已支持==的类型走这里。 - 结构体 / 类
Person:公有成员姓名mName、年龄mAge,有参构造赋初值。 - 针对
Person的具体化版本(template<>),按**姓名并且年龄**都相等才视为相等;只要传入Person就必须走这一版,不得走通用模板。
先读入 \(n\) 对整数,用通用模板比较。再读入 \(m\) 对人物,用具体化版本比较。
输入格式
第一行两个整数 \(n, m\)(\(1 \le n, m \le 1000\))。
接下来 \(n\) 行,每行两个整数 \(a, b\)(\(\lvert a\rvert, \lvert b\rvert \le 10^9\))。
再接下来 \(m\) 行,每行:不含空白的姓名 \(s_1\)、整数年龄 \(x_1\)、不含空白的姓名 \(s_2\)、整数年龄 \(x_2\)。姓名长度 \(1\sim 20\),年龄为 \(1\sim 10^6\)。
输出格式
先输出 \(n\) 行整数比较结果:相等输出 a==b,否则 a!=b。
再输出 \(m\) 行人物比较结果:相等输出 p1==p2,否则 p1!=p2。
样例
输入 #1
2 3
10 20
7 7
Tom 10 Tom 10
Tom 10 Tom 11
Jerry 8 Tom 8
输出 #1
a!=b
a==b
p1==p2
p1!=p2
p1!=p2
输入 #2
1 1
0 0
A 1 A 1
输出 #2
a==b
p1==p2
说明
通用模板对 Person 做 == 无法通过编译。具体化后按姓名与年龄同时比较。同名不同龄、同龄不同名都不相等。数组不能互相赋值,本题不要求处理数组。
信息
- ID
- 1172
- 难度
- (无)
- 分类
- (无)
- 标签
- (无)
- 递交数
- 0
- 已通过
- 0
- 通过率
- ?
- 上传者