我正在学习C,现在来自了解perl和一点python。我做了一个快速搜索,发现在perl / python中没有显式的哈希/字典,我看到人们说你需要一个函数来查找哈希表。所以事实是C不提供固有的哈希结构,你必须编写一些函数才能在C中使用哈希?
答案 0 :(得分:8)
基本上,C所拥有的唯一数据结构是数组,结构(有点像地图,但必须在编译时知道密钥)和联合。其他所有内容必须手动编码或由图书馆提供。
答案 1 :(得分:4)
它不是标准C库的一部分。使用像Glib这样的库。
答案 2 :(得分:1)
我建议你看看一个非常好的图书馆GLib:
GLib是一个通用的实用程序库,它提供了许多有用的功能 数据类型,宏,类型转换,字符串实用程序,文件 实用程序,主循环抽象等。它适用于许多人 类似UNIX的平台,以及Windows和OS X.发布了GLib 根据GNU图书馆通用公共许可证(GNU LGPL)。
有许多OpenSource项目使用这个库:GNOME,Wireshark等等。 Glib包括许多有用数据结构的实现,例如:
答案 3 :(得分:1)
KLib包含以下智能定义:
答案 4 :(得分:1)
忽略所有上述误导性答案,C早在所有这些奇特的语言都存在之前就已经为此提供了一个标准库。基本版本只创建一张表,GNU版本只需要一张表。
#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);
签出