如何在c++中高效地实现PHP字符串索引数组


How can PHP string indexed arrays be achieved efficiently in C++

我一直在大列表中搜索文本,发现使用PHP数组似乎是一种快速的方法。

。如果你有很多地名和相关的邮政编码你可以像这样将它们读入PHP数组:

$place[‘place name here’] = “postcode”;

如果要查找,只需将要查找的位置插入到数组中:

$postcode_sought = $place[‘place I want to look up’];

我认为我可以用c++来加快这个速度,但是当然c++不允许(据我所知)以字符串作为索引的数组。

我能想到的唯一方法是为位置和邮政编码创建向量,并循环通过位置向量寻找匹配,但重复的字符串比较需要永远,正如我所期望的。我也尝试过散列文本,但我仍然不能得到任何地方接近PHP的速度。

我认为PHP是用C写的,所以我的问题是C如何为PHP创建这个字符串索引名称功能?我不是在寻找实际的代码或任何东西,在我看来,必须有一些基本的技术,用于此,我只是想知道是否有人在那里谁可以简要地解释它。

提前感谢。C

我认为我可以用c++来加快这个速度,但是当然c++不允许(据我所知)以字符串作为索引的数组。

可以使用std::map作为关联数组

您可以尝试使用Berkeley DB。在过去,它是最快的,但默认情况下它是面向磁盘的。我不知道你是否可以在内存中运行它,但是你总是可以从tmpfs挂载目录。

PHP可能使用一些外部类的哈希表。通过编写快速搜索算法,你可以走得更远。对键进行排序,并检查中间的键。然后再中间一次,直到你找到钥匙。您也可以对密钥使用MD5(),因为它比纯字符串比较更快。

C和c++只允许整数类型作为数组索引,字符串甚至不是C/c++的类型,它们实际上是一个字符数组。
如上所述,使用std::map或类似的