回 帖 发 新 帖 刷新版面

主题:stl map中对key快速的模糊查找...不遍历整个map表!

我在CSDN发过一贴,不过没找到答案,因为很急啊...希望这里有大大能够帮我解决!
我的multimap中有100万数据,我现在搜索key为“你好”.
我需要列出
“你好”
“hello你好”
“你好吗”
....
我现在只会用for循环整个表, 那样效率太慢了。可是用find函数,只能找出等于“你好”的记录
用lower_bound和upper_bound也没办法,因为我不知道以什么开始和结束..

find_if?..这个函数只接受一个参数啊,能传2个参数就好了!!

求不需要变量整个表,就能够得到我需要的记录的办法....

回复列表 (共7个回复)

沙发

参考http://topic.csdn.net/t/20050629/10/4111762.html
只不过是对你形参3的构造的要求

板凳

收到了。只能通过find_if来做么?
下午一直在写一个字符串分析函数,现在才上来看!!

3 楼

不遍历是不可能的

4 楼

深圳华信群英科技有限公司,目前主要从事软件外包开发、高级软件人才定向输送等业务,面对日益严峻的大学生就业难和IT企业招聘难,自2006以来,与知名通信软件公司正式签订定向输送人才的合作协议,针对想进入软件行业的人员提供企业实训,实训课程采用“2+3”分段教学模式,分为2个月理论强化和3个月项目实训两个阶段,共计900学时。
企业订单委培,内训前签订就业安置协议,100%保证就业。实训结束之后,在华信群英科技及其战略合作伙伴从事通信软件研发工作。欢迎有意向者加QQ:649846168咨询。

5 楼

回雪光,find_if不能传递2个参数啊..

回3楼,难道真要用迭代器一个一个找?。很耗性能啊!!

6 楼

[quote]回雪光,find_if不能传递2个参数啊..

回3楼,难道真要用迭代器一个一个找?。很耗性能啊!![/quote]
map本来就是构造key提高检索效率的,同一个关键字在不同的序列中形式不同,不遍历的情况下直接企图模糊搜索关键字是不可能的了

7 楼

标准STL的map和multimap其实仅仅是二叉树,确实无法做到“模糊查找”这种事情。另外,二叉树的遍历也会比线性结构(比如:std::vector)要慢。

如果数据规模确实是100万的话,挨个比较,也是可以很快完成的。
如果数据规模再扩大,可能需要更加复杂的数据结构。

我来回复

您尚未登录,请登录后再回复。点此登录或注册