我现在正在学习 C,因为我知道 perl 和一点 python。我进行了快速搜索,发现没有像 perl/python 中那样明确的哈希/字典,我看到人们说您需要一个函数来查找哈希表。所以事实是 C 不提供固有的散列结构,你必须编写一些函数才能在 C 中使用散列?
问问题
13239 次
4 回答
8
基本上,C 拥有的唯一数据结构是数组、结构(有点像映射,但在编译时必须知道键)和联合。其他一切都必须手动编码或由库提供。
于 2013-04-22T15:32:52.007 回答
4
它不是标准 C 库的一部分。使用诸如 Glib 之类的库。
于 2013-04-22T15:31:12.093 回答
3
忽略上述所有误导性的答案,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);
签出:
https://pubs.opengroup.org/onlinepubs/9699919799/functions/hcreate.html
于 2019-07-26T16:17:18.767 回答
0
我建议你看看一个非常好的库GLib:
GLib 是一个通用实用程序库,它提供了许多有用的数据类型、宏、类型转换、字符串实用程序、文件实用程序、主循环抽象等。它适用于许多类 UNIX 平台,以及 Windows 和 OS X。GLib 是在 GNU 库通用公共许可证 (GNU LGPL) 下发布的。
有许多使用这个库的开源项目:GNOME、Wireshark 等等。Glib 包括许多有用的数据结构的实现,例如:
- 哈希表(GHashTable)
- 双链表(GList)
- 队列(QQueue)
- 数据集
- ETC
于 2013-04-22T16:43:18.967 回答