有效地搜索字符串的链接对象列表

时间:2013-10-16 09:07:29

标签: c++ search linked-list

由于某些原因,我有一个链接的对象列表,其中Object包含一个字符串。

我可能需要搜索特定字符串,并在此过程中,根据该字符串检索对象。

列表的起始标题是我对列表的唯一输入。

虽然我拥有的对象数量上限为3000,并且不是那么多,但我仍然想知道是否有一种有效的方法来执行此操作,而不是逐个搜索对象以获得匹配的字符串。

列表中的对象没有以任何方式排序,我不能指望它们被排序,链接列表的入口点是我唯一的输入。

那么,有人能告诉我是否有一种有效的方法(也许是搜索算法)来实现这一目标?

单独进行此类搜索,如果需要,推荐的数据结构类型是什么,假设此搜索是对象中数据密集程度最高的函数?

谢谢..

3 个答案:

答案 0 :(得分:2)

使用std::map<std::string, YourObjectType>。您仍然可以迭代所有对象。但它们现在按字符串排序。

如果您有多个具有相同字符串的对象,请改用multimap

答案 1 :(得分:0)

拥有3000你想使用unordered map而不是链表,这将为你提供平均O(1)查找,插入和删除时间。

答案 2 :(得分:0)

如果你不能切换到任何不同的结构/容器,那么就没有办法比线性到列表大小更好。