具有混合(数字和字符串)索引的关联数组?

时间:2010-06-28 06:27:42

标签: c arrays associative-array dynamic-arrays

如何实现可以采用任意数量的混合索引(整数,字符串或两者)的动态关联数组?

我的目标是通过提供people[3].location作为people[3, "location"]的句法糖来模拟结构。你会如何建议在内部表示这种数组?

顺便说一句,我使用的是C语言,出于可移植性的原因,我只能使用标准库。

感谢您的建议!

编辑:为了澄清,我问如何用C语言编写的编程语言解释器实现具有混合索引的动态关联数组。所讨论的解释器实际上是{{3}但是,这并不是特别相关。

修改:更改为使用[]表示数组语法,而不是()

3 个答案:

答案 0 :(得分:1)

了解提供此类功能并使用C语言编写的开源项目。请记住perl和emacs,它们都具有强大的关联数组。在perl中,它是他们的哈希实现,并在emacs lisp中进行符号处理。也许你可以从中获得灵感。

答案 1 :(得分:0)

使用二叉树,如红黑树或AVL树。维基百科对它们都有一些好的信息。

编辑:您不能重载C中的下标[]运算符。

答案 2 :(得分:0)

我可能会找一个字符串键的哈希表,可能是整数键的向量,两者都指向相同的数据。

我正在考虑php处理数组的方式:http://www.php.net/manual/en/language.types.array.php