我现在正在从了解perl和一点python转向学习C。我进行了快速搜索,发现C没有像perl/python那样明确的哈希/字典结构,并且我看到有人说需要一个函数来查找哈希表。因此,事实是C不提供固有的哈希结构,您必须编写一些函数才能在C中使用哈希?
基本上,C语言只有数组、结构体(类似于map,但键必须在编译时已知)和联合数据结构。其他所有的数据结构都必须手动编码或由库提供。
#include <search.h>
int hcreate(size_t nel);
ENTRY *hsearch(ENTRY item, ACTION action);
void hdestroy(void);
#define _GNU_SOURCE /* See feature_test_macros(7) */
#include <search.h>
int hcreate_r(size_t nel, struct hsearch_data *htab);
int hsearch_r(ENTRY item, ACTION action, ENTRY **retval, struct hsearch_data *htab);
void hdestroy_r(struct hsearch_data *htab);
查看:
https://pubs.opengroup.org/onlinepubs/9699919799/functions/hcreate.html
这不是标准C库的一部分。可以使用类似Glib的库。
我建议您看一下一个非常好的库GLib:
GLib是一个通用的实用程序库,提供许多有用的数据类型、宏、类型转换、字符串实用程序、文件实用程序、主循环抽象等。它可以在许多类UNIX平台以及Windows和OS X上工作。GLib是根据GNU图书馆通用公共许可证(GNU LGPL)发布的。
有许多开源项目使用这个库:GNOME、Wireshark等等。 Glib包括许多有用数据结构的实现,例如: