Programming 版 (精华区)

发信人: tcpip (高级草包.org), 信区: Programming
标  题: stl中一个容易犯的错误
发信站: 哈工大紫丁香 (2001年10月11日00:00:34 星期四), 站内信件

stl中一个容易犯的错误
stl中的查询有一个地方需要注意,比如你有:
map<string,int> shit;
string xxx;
查找的时候很可能自然的就是用了if(shit[xxx])来判断,判断的结果似乎是对的,但是这样做
每次查询后实际上都会在shit中增加了一个<stirng,int>,无形中shit的体积大了。
如果查询的次数比较少的话,这个错误很难发现,因为第一次判断的结果是对的!而且更要命的
是,如果查询在循环里边的话,有可能最终耗尽系统的全部内存!
正确的方法是使用
if(shit.find(xxx)!=shit.end())
//...

这个错误曾经把我害惨了,写出来提醒一下其他用stl的兄弟姐妹吧
而且据我所知使用stl的3个人中3个都犯过这个错误,哈哈。

--
这一千多年没写诗了?"
"写了, 不过只写了两句."
"千年得两句, 一定是万古丽句了. 念来听听."
"好吧, 我现丑了" 太白星清了清嗓子, 浑厚的男中音在天庭响起:
大海啊, 都是水;
骏马啊, 四条腿;

※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: 天外飞仙]
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:5.521毫秒