bool operator<(const Elem &s)const//比较时间长短 { return time<s.time; } c语言表示不用c++
时间: 2024-01-18 08:50:08 浏览: 96
在 C 语言中,可以使用函数指针作为参数来实现类似于 C++ 中运算符重载的功能。以下是用函数指针实现类似于 C++ 中小于号运算符重载的示例:
```
typedef struct {
int time;
// 其他成员变量
} Elem;
int compare(const Elem *a, const Elem *b) {
if (a->time < b->time) {
return -1;
} else if (a->time > b->time) {
return 1;
} else {
return 0;
}
}
void sort(Elem *arr, int n, int (*compare)(const Elem *, const Elem *)) {
int i, j;
Elem tmp;
for (i = 0; i < n; i++) {
for (j = i + 1; j < n; j++) {
if (compare(&arr[j], &arr[i]) < 0) {
tmp = arr[i];
arr[i] = arr[j];
arr[j] = tmp;
}
}
}
}
int main() {
Elem arr[] = {{3}, {2}, {1}, {4}, {5}};
int n = sizeof(arr) / sizeof(Elem);
sort(arr, n, compare);
int i;
for (i = 0; i < n; i++) {
printf("%d ", arr[i].time);
}
printf("\n");
return 0;
}
```
在上述代码中,我们定义了一个 `Elem` 结构体和一个比较函数 `compare`,然后使用函数指针将 `compare` 函数作为参数传递给 `sort` 函数中,实现了按时间长短排序的功能。
阅读全文