C++结构体怎么比较大小
时间: 2023-11-14 07:22:24 浏览: 124
C语言中的结构体不能直接进行比较,需要自己定义比较函数来进行比较,例如:
```c
#include <stdio.h>
typedef struct {
int id;
int age;
} Person;
int compare_person(const void* a, const void* b) {
const Person* pa = (const Person*)a;
const Person* pb = (const Person*)b;
if (pa->age < pb->age) {
return -1;
} else if (pa->age > pb->age) {
return 1;
} else {
return 0;
}
}
int main() {
Person people[] = {{1, 18}, {2, 20}, {3, 17}};
int n = sizeof(people) / sizeof(people[0]);
qsort(people, n, sizeof(Person), compare_person);
for (int i = 0; i < n; ++i) {
printf("person %d: id=%d, age=%d\n", i, people[i].id, people[i].age);
}
return 0;
}
```
这个程序中,我们定义了一个 `Person` 结构体表示一个人,然后定义了一个 `compare_person` 函数用来比较两个 `Person` 结构体的大小,这里我们用年龄来比较。最后用 `qsort` 函数来排序数组,输出结果如下:
```
person 0: id=3, age=17
person 1: id=1, age=18
person 2: id=2, age=20
```
因为人的年龄不同,所以排序结果正确。
阅读全文