Chinaunix首页 | 论坛 | 博客
  • 博客访问: 480434
  • 博文数量: 53
  • 博客积分: 492
  • 博客等级: 下士
  • 技术积分: 866
  • 用 户 组: 普通用户
  • 注册时间: 2011-11-14 15:12
文章分类

全部博文(53)

文章存档

2016年(1)

2015年(3)

2014年(17)

2013年(9)

2012年(7)

2011年(16)

我的朋友

分类: C/C++

2011-12-14 11:02:49

    首先,不推荐使用[]来判断key是否存在,因为使用操作符[]会向map容器里插入一个元素。
 
    map的operator[]重载大致是这样一个内容:

        data_type&   operator[](   const   key_type&   k   )
        {
        value_type   v(k,   data_type());
        iterator   it   =   insert(v).first;
        return   it-> second;
        }
 
     大致是这样,如果没有找到的话就插入一个,然后返回它的second。
 
    正确的判断方法是使用map的find函数,由于map是一个红黑树,find的时间复杂度是logn,可以接受。

    bool i***ist(const String& keyName)
    {
        return ( mRegistryMap.find(keyName) != mRegistryMap.end() );
    }

阅读(34156) | 评论(5) | 转发(3) |
给主人留下些什么吧!~~

桔色花朵2011-12-15 23:32:46

businiaowyf: 我晕 Is Exist  中间三个字母竟然被和谐了。。.....
哈哈,和谐的太给力了!

businiaowyf2011-12-15 14:04:01

校长的马夹: find函数真不错!.....
我晕 Is Exist  中间三个字母竟然被和谐了。。

校长的马夹2011-12-15 02:48:01

find函数真不错!