我正在学习GLib GHashTable源代码。 您可以从此处的链接查看源代码。
https://github.com/GNOME/glib/blob/master/glib/ghash.c
https://github.com/GNOME/glib/blob/master/glib/ghash.h
GHashTable *g_hash_table_new (GHashFunc hash_func,
GEqualFunc key_equal_func)
g_hash_table_new 函数在此处创建基本哈希表。 我的问题是参数。 前两个参数“GHashFunc hash_func, GEqualFunc key_equal_func”将传递给该函数。
在ghash.h中,没有hash_func和key_equal_func,它们只是符号。它们将被真正的哈希函数取代。 这里两个函数怎么变成参数了?
我知道 ghash.h 文件中有一些哈希函数,例如:
guint g_int_hash (gconstpointer v)
guint g_str_hash (gconstpointer v)
这些函数将在运行时传递给“g_hash_table_new”以替换“hash_func”和“key_equal_func”。 但我不知道那是什么技术? 如何将一个函数作为参数传递给另一个函数并在运行时替换它。
谢谢
最佳答案
你传递的参数是一个点,你定义哈希计算函数。所有的函数过程都是回调函数。哈希表只需将参数传递给您的 equel 函数。
关于c++ - GLib HashTable 将函数作为参数传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31530206/