主题:stl map中对key快速的模糊查找...不遍历整个map表!
honemay
[专家分:60] 发布于 2010-05-17 12:49:00
我在CSDN发过一贴,不过没找到答案,因为很急啊...希望这里有大大能够帮我解决!
我的multimap中有100万数据,我现在搜索key为“你好”.
我需要列出
“你好”
“hello你好”
“你好吗”
....
我现在只会用for循环整个表, 那样效率太慢了。可是用find函数,只能找出等于“你好”的记录
用lower_bound和upper_bound也没办法,因为我不知道以什么开始和结束..
find_if?..这个函数只接受一个参数啊,能传2个参数就好了!!
求不需要变量整个表,就能够得到我需要的记录的办法....
回复列表 (共7个回复)
沙发
雪光风剑 [专家分:27190] 发布于 2010-05-17 18:26:00
参考http://topic.csdn.net/t/20050629/10/4111762.html
只不过是对你形参3的构造的要求
板凳
honemay [专家分:60] 发布于 2010-05-17 19:28:00
收到了。只能通过find_if来做么?
下午一直在写一个字符串分析函数,现在才上来看!!
3 楼
bruceteen [专家分:42660] 发布于 2010-05-17 21:08:00
不遍历是不可能的
4 楼
xiaoruo331 [专家分:100] 发布于 2010-05-19 10:19:00
深圳华信群英科技有限公司,目前主要从事软件外包开发、高级软件人才定向输送等业务,面对日益严峻的大学生就业难和IT企业招聘难,自2006以来,与知名通信软件公司正式签订定向输送人才的合作协议,针对想进入软件行业的人员提供企业实训,实训课程采用“2+3”分段教学模式,分为2个月理论强化和3个月项目实训两个阶段,共计900学时。
企业订单委培,内训前签订就业安置协议,100%保证就业。实训结束之后,在华信群英科技及其战略合作伙伴从事通信软件研发工作。欢迎有意向者加QQ:649846168咨询。
5 楼
honemay [专家分:60] 发布于 2010-05-19 16:09:00
回雪光,find_if不能传递2个参数啊..
回3楼,难道真要用迭代器一个一个找?。很耗性能啊!!
6 楼
雪光风剑 [专家分:27190] 发布于 2010-05-19 17:42:00
[quote]回雪光,find_if不能传递2个参数啊..
回3楼,难道真要用迭代器一个一个找?。很耗性能啊!![/quote]
map本来就是构造key提高检索效率的,同一个关键字在不同的序列中形式不同,不遍历的情况下直接企图模糊搜索关键字是不可能的了
7 楼
eastcowboy [专家分:25370] 发布于 2010-05-19 21:02:00
标准STL的map和multimap其实仅仅是二叉树,确实无法做到“模糊查找”这种事情。另外,二叉树的遍历也会比线性结构(比如:std::vector)要慢。
如果数据规模确实是100万的话,挨个比较,也是可以很快完成的。
如果数据规模再扩大,可能需要更加复杂的数据结构。
我来回复