C语言中有哪些好的multimap实现方式?

3
我试图将一些Delphi代码移植到C库,但其核心结构基于multimap。由于没有任何类型的通用程序和语言级别对动态数组的支持,在C中构建自己的multimap将非常痛苦。但我想有人已经在某个地方编写了一些。您在哪里可以找到一个好的C multimap实现?
(另外,为了澄清,在这里,“multimap”标签注释说“类似于地图的结构,但允许重复键。”我有点困惑,因为那不是我熟悉的multimap容器。我需要的是“类似于地图的结构,但允许每个(唯一)键具有多个值。”换句话说,multimap<x,y> = map<x,list<y>>。)

1
@H2CO3 我非常怀疑如果他不在Mac上,他不会使用CoreFoundation库,而且考虑到Embarcadero Delphi仅限于Windows,这不是一个选择。 - Richard J. Ross III
CFLite不仅仅支持OS X,对吧? - user529758
1
@H2CO3 不是,但Windows不太可能发现这个问题。我不是说它不能工作 - 我只是说对于他的平台来说可能不是最佳选择。 - Richard J. Ross III
1
指出错误的标签描述,加1分。 - WhozCraig
@Richard: 实际上,Delphi现在已经有了一个Mac OSX编译器,并且他们目前正在开发iOS和Android编译器。但是,是的,我正在寻找一个不绑定于苹果库的解决方案。 - Mason Wheeler
显示剩余5条评论
1个回答

4
虽然不是直接的multimap库,uthash 在C语言中实现了一个简单的关联数组,并且只是一个头文件,因此它具有较低的环境开销和较高的可移植性。
使用uthash,您可以简单地创建一个多级关联数组,将子关联数组视为集合。uthash文档提供了一个简单示例,用于创建和使用多级关联数组。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接