HM173 具体化比对

HM173 具体化比对

HM173 具体化比对

来源: 第 173 集 模板-模板的局限性

难度: 普及-

时间限制: 1s

空间限制: 64MB

题目描述

函数模板很通用,但不是万能的。对两个 Ta = b 时,若 T 是数组,数组之间不能直接赋值;对两个 Ta > ba == b 时,若 T 是自定义类型,编译器不知道该比姓名、年龄还是别的字段,通用模板会在实例化时失败。

有两种出路:在自定义类型里重载运算符;或者为该类型提供**具体化**模板。具体化版本会优先于通用模板被调用。学习模板主要是为了以后会用标准库里别人写好的模板,不必自己到处发明模板。

请实现:

  1. 通用函数模板 myCompare(T &a, T &b):用 == 比较,相等返回 true,否则 false。内置类型、string 等已支持 == 的类型走这里。
  2. 结构体 / 类 Person:公有成员姓名 mName、年龄 mAge,有参构造赋初值。
  3. 针对 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
通过率
?
上传者