由于某些原因,我有一个链接的对象列表,其中Object包含一个字符串。
我可能需要搜索特定字符串,并在此过程中,根据该字符串检索对象。
列表的起始标题是我对列表的唯一输入。
虽然我拥有的对象数量上限为3000,并且不是那么多,但我仍然想知道是否有一种有效的方法来执行此操作,而不是逐个搜索对象以获得匹配的字符串。
列表中的对象没有以任何方式排序,我不能指望它们被排序,链接列表的入口点是我唯一的输入。
那么,有人能告诉我是否有一种有效的方法(也许是搜索算法)来实现这一目标?
单独进行此类搜索,如果需要,推荐的数据结构类型是什么,假设此搜索是对象中数据密集程度最高的函数?
谢谢..
答案 0 :(得分:2)
使用std::map<std::string, YourObjectType>
。您仍然可以迭代所有对象。但它们现在按字符串排序。
如果您有多个具有相同字符串的对象,请改用multimap
。
答案 1 :(得分:0)
拥有3000你想使用unordered map
而不是链表,这将为你提供平均O(1)查找,插入和删除时间。
答案 2 :(得分:0)
如果你不能切换到任何不同的结构/容器,那么就没有办法比线性到列表大小更好。