使用 g_array_sort 函数
我需要使用函数 g_array_sort(GArray *array, GCompareFunc *func)
但我不理解第二个参数。
请告诉我应该如何调用它,如果可能的话请附上示例......
I need to use the function g_array_sort(GArray *array, GCompareFunc *func)
but I do not understand the second parameter.
Please show me how it should be called and if possible please attach a sample example....
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
g_array_sort()的第二个参数是一个指向函数的指针。如果您查看 GCompareFunc 的文档,您会发现将看到它是一个带有两个指针并返回一个 int 的函数:
文档还告诉您这个函数应该做什么:
由于您没有指定要在数组中存储的数据类型,因此我将仅使用字符串。您的排序函数看起来像这样:
如果您在数组中存储数字,您可以执行类似的操作
将这些函数与
g_array_sort
一起使用The second argument of
g_array_sort ()
is a pointer to a function. If you look at the documentation for GCompareFunc you will see that it is a function that takes two pointers and returns an int:The documentation also tells you what this function should do:
As you didn't specify what datatypes you're storing in your array, I'll just go with strings. Your sort function would look something like this:
If you were storing numbers in your array you could do something like
To use these functions with
g_array_sort
这是一个开源库,因此您可以查看
g_array_sort()
本身的代码。只需在 Google 代码搜索中输入 g_array_sort 即可获得代码。在那里你可以看到这个函数实际上调用了 libc 的 qsort(3) 并将你感兴趣的函数原封不动地传递给 qsort。
现在,Linux 的 qsort 手册页 提供了一个很好的 qsort 使用示例。
This is an open source library, so you could take a look at the code of
g_array_sort()
itself. Just type in g_array_sort into Google's code search and you'll get the code.There you can see that this function actually calls libc's qsort(3) and passes the function you are interested in to qsort unchanged.
Now, Linux's qsort man page has a good example of qsort use.
为 iain 的答案添加一个例子。
这是一个显示 GArray 函数(包括“g_array_sort()”)效果的示例。可以看到,排序后,int数组按照升序排列:
上面代码的结果:
Add an example for iain's answer.
This is an example to show the effect of GArray functions including 'g_array_sort()'. You can see that after the sort, the int array is listed in an ascending order:
Result of the code above: