gpt4 book ai didi

c - 在给定函数指针的情况下反转比较函数结果

转载 作者:行者123 更新时间:2023-11-30 15:22:28 25 4
gpt4 key购买 nike

在我深入探讨之前 - 这是一些家庭作业的一部分。然而,我已经尽了最大的努力,但似乎无法弄清楚如何实现这一点。

我得到了一个堆结构,它包含一个指向用于比较堆元素的比较函数的指针。但是,在特定实例中,需要反转给定比较函数(示例中的 strcmp)的值。 if a<b 而不是返回负数,堆调用的比较函数需要返回一个正数。

我无法修改任何使用堆结构的方法,也无法传入正确排序的方法。我可以创建另一个函数,然后给出指向该函数的指针。

最佳答案

编写一个新函数并指示堆将其用作比较器。这个新函数需要访问现有的比较器指针;它将使用现有的指针来调用原始比较器,接收其返回值,“反转”它并将反转的结果返回给它自己的调用者(即堆)。

例如,下面是一个返回随机奇数整数的函数,并以返回完全随机整数的函数的形式实现:

int totally_random() {
return 4; // chosen by fair die roll
}

int (*pointer)();
pointer = totally_random;

int odd_random() {
int result = *pointer(); // passed in through a global but alternatives exist
return result & 1 ? result : result + 1; // if even, add one to make odd
}

关于c - 在给定函数指针的情况下反转比较函数结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29220184/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com