map vector

 标  题: [合集] map或vector进行搜索时的效率差别有多大?
发信站: BBS 水木清华站 (Wed May 12 18:58:19 2004), 站内

☆─────────────────────────────────────☆
   epoh (epoh) 于  (Sun Mar 14 16:36:19 2004)  提到:

我的程序要读入一些字符串,记录它们出现的次数
我每次读入一个字符串时,需要搜索已有记录,已有记录则+1,没有记录则添加一个记录


我的问题是,用什么来记录不同字符串的出现情况呢?

用map在搜索时效率会比用vector高很多吗?(如果用vector我就自己用iterator遍历,直
到发现有相同的字符串)


☆─────────────────────────────────────☆
   CtrlF (孤竹王子) 于  (Sun Mar 14 16:59:41 2004)  提到:

是不是
N         
- vs log N 
2       2
呀,
大侠指点吧
【 在 epoh (epoh) 的大作中提到: 】
: 我的程序要读入一些字符串,记录它们出现的次数
: 我每次读入一个字符串时,需要搜索已有记录,已有记录则+1,没有记录则添加一个记录
: 我的问题是,用什么来记录不同字符串的出现情况呢?
: 用map在搜索时效率会比用vector高很多吗?(如果用vector我就自己用iterator遍历,直
: 到发现有相同的字符串)




☆─────────────────────────────────────☆
   epoh (epoh) 于  (Sun Mar 14 17:09:08 2004)  提到:

我不确定map是否对记录排序。如果排序的话,搜索时应该是N/2  vs  log2(N)

但是如果每次加入新记录(也就是每次遇到新字符串时)之后都排序,这样效率也不高吧

如果是vector,加入新记录只要简单bush_back就可以了
但是如果是map,新记录加入后会有什么动作?
请指教

【 在 CtrlF (孤竹王子) 的大作中提到: 】
: 是不是
: N         
: - vs log N 
: 2       2
: 呀,
: 大侠指点吧
: 【 在 epoh (epoh) 的大作中提到: 】
: : 我的程序要读入一些字符串,记录它们出现的次数
: : 我每次读入一个字符串时,需要搜索已有记录,已有记录则+1,没有记录则添加一..
: : 我的问题是,用什么来记录不同字符串的出现情况呢?
: ...................



☆─────────────────────────────────────☆
   TOP30 (生是软件人,死是软件的死人) 于  (Sun Mar 14 17:14:26 2004)  提到:

还是用map吧,虽然我没有用过,不过我觉得这种情况应该用map。
【 在 epoh (epoh) 的大作中提到: 】
: 我不确定map是否对记录排序。如果排序的话,搜索时应该是N/2  vs  log2(N)
: 但是如果每次加入新记录(也就是每次遇到新字符串时)之后都排序,这样效率也不高吧
: ?
: 如果是vector,加入新记录只要简单bush_back就可以了
: 但是如果是map,新记录加入后会有什么动作?
                 会排序,不过很快,因为已经找到位置了。
: 请指教




☆─────────────────────────────────────☆
   Hyena2000 (小老虎(嗷嗷)^_^) 于  (Sun Mar 14 18:21:32 2004)  提到:

有的Map是采用平衡二叉树完成的,效率应该没有问题。

【 在 epoh (epoh) 的大作中提到: 】
: 我的程序要读入一些字符串,记录它们出现的次数
: 我每次读入一个字符串时,需要搜索已有记录,已有记录则+1,没有记录则添加一个记录
: 我的问题是,用什么来记录不同字符串的出现情况呢?
: 用map在搜索时效率会比用vector高很多吗?(如果用vector我就自己用iterator遍历,直
: 到发现有相同的字符串)




☆─────────────────────────────────────☆
   cpu8088 (wu) 于  (Sun Mar 14 18:56:27 2004)  提到:

当然使用map了,map的搜索效率是log2N,
如果vector是有序的话,那么它的搜索效率等同于map,
不过,考虑到需要向vector中加入新的字符串,如果还想要保持log2N
的搜索效率,就得考虑vector中插入字符串的问题,这是vector所忌讳的
,因为得移动插入点后面所有的元素,
而map则不存在这样的问题,插入的同时就保证了顺序,大多的map都以
平衡二叉树或类似的形式实现的,所以在处理这些问题时,效率很高的



【 在 epoh (epoh) 的大作中提到: 】
: 我的程序要读入一些字符串,记录它们出现的次数
: 我每次读入一个字符串时,需要搜索已有记录,已有记录则+1,没有记录则添加一个记录
: 我的问题是,用什么来记录不同字符串的出现情况呢?
: 用map在搜索时效率会比用vector高很多吗?(如果用vector我就自己用iterator遍历,直
: 到发现有相同的字符串)




☆─────────────────────────────────────☆
   epoh (epoh) 于  (Sun Mar 14 19:02:30 2004)  提到:

3x!说得很明白
【 在 cpu8088 (wu) 的大作中提到: 】
: 当然使用map了,map的搜索效率是log2N,
: 如果vector是有序的话,那么它的搜索效率等同于map,
: 不过,考虑到需要向vector中加入新的字符串,如果还想要保持log2N
: 的搜索效率,就得考虑vector中插入字符串的问题,这是vector所忌讳的
: ,因为得移动插入点后面所有的元素,
: 而map则不存在这样的问题,插入的同时就保证了顺序,大多的map都以
: 平衡二叉树或类似的形式实现的,所以在处理这些问题时,效率很高的



: ...................



☆─────────────────────────────────────☆
   marxlee (Guide me with your grace) 于  (Sun Mar 14 19:02:41 2004)  提到:

建议使用hash table ,这样会快非常多。

【 在 epoh (epoh) 的大作中提到: 】
: 我的程序要读入一些字符串,记录它们出现的次数
: 我每次读入一个字符串时,需要搜索已有记录,已有记录则+1,没有记录则添加一个记录
: 我的问题是,用什么来记录不同字符串的出现情况呢?
: 用map在搜索时效率会比用vector高很多吗?(如果用vector我就自己用iterator遍历,直
: 到发现有相同的字符串)




☆─────────────────────────────────────☆
   RoachCock (chen3feng) 于  (Sun Mar 14 19:05:46 2004)  提到:

hash不是标准库里的东西

【 在 marxlee (Guide me with your grace) 的大作中提到: 】
: 建议使用hash table ,这样会快非常多。




☆─────────────────────────────────────☆
   marxlee (Guide me with your grace) 于  (Sun Mar 14 19:07:20 2004)  提到:

但在这里效率会非常高
【 在 RoachCock (chen3feng) 的大作中提到: 】
: hash不是标准库里的东西




☆─────────────────────────────────────☆
   RoachCock (chen3feng) 于  (Sun Mar 14 19:32:15 2004)  提到:

比map高一些,单数数据量不大的话显不出什么优势

【 在 marxlee (Guide me with your grace) 的大作中提到: 】
: 但在这里效率会非常高
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值