我需要比较以下结构中包含的不同类型的数据:
struct Person{
string surname;
char BType;
string organ;
int age;
int year, ID;
} Patient[50], Donor[50];
使用以下文件初始化这些结构:
Patients 3
Androf B kidney 24 2012
Blaren O kidney 35 2010
Cosmer A heart 35 2007
......这些字段分别是姓氏,BType,器官,年龄,年份。
如果我想将BType
的{{1}}与Patient[1]
BType
进行比较,我将如何进行此操作?
答案 0 :(得分:0)
如果我理解正确,你有一个包含几个不同类型成员的结构,你正在寻找一种方法来比较这个结构的实例。
它可能看起来如下:
struct X {
std::string s;
char c;
int i;
bool operator==(const X& ref) {
return s == ref.s && c == ref.c && i == ref.i;
}
bool operator!=(const X& ref) {
return !this->operator==(ref);
}
};
可能的用法:
X x1, x2;
x1.s = x2.s = "string";
x1.c = x2.c = 'c';
x1.i = x2.i = 1;
if (x1 == x2)
std::cout << "yes";
x1.s = "string2";
if (x1 != x2)
std::cout << " no";
输出yes no
因为起初所有成员都相等但后来的字符串不同。
但是,如果您只需要比较特定成员,请直接访问和比较它们(不需要重载operator==
):
if (Patient[1].BType == Donor[1].BType) {
...
}