map[]的正确使用:自以为是导致map的一个错误使用

今天自己写的棒视图模块与系统联调时出错,花了我一个多小时,终于找出出错原因:简单的说就是没有理解透map型的[]操作符的内在机理,代码表现为:

class A

{

BOOL RefrshBar(int nID);

map<int,structTstPntInfo*> m_map;//成员变量,structTstPntInfo是一个自定义结构

}

 

BOOL A::RefrshBar(int nID)

{

structTstPntInfo* stB = m_map[nID] ; 

...

}

将调用我这个模块的人在刷新时指定了一个不存在的棒图nID时,这个成员变量中就增加了一个对此nID的映射,

这样导致其它信赖这个成员变量的成员函数就会出错:m_map中多了逻辑上不存在的映射关系;

而我自以为是此种写法没有向m_map中增加实例,仅当对m_map赋值时才向他内部增加一个实例即映射关系,

形如:structTstPntInfo  = stA; m_map[niD] = &stA; 事实上从map中取映射值时也会向map中增加实例;

总结:

1。对map的重载操作符[]而言,情况是不是这样的:只要调用了这个重载符,则首先向内部找是否存在这个映

射,若无则增加一个实例。

2。我在工作以外(生活中)还有多少自以为是的地方!!!若也有很多如此在自以为是,真是恐怖!!!我在生活中又应该如何不要犯如此自以为是的错误呢?这也是我现在想想就从床上爬起来写下这些的一个重要原因(现在是20070929凌晨5:36)

对于我这个总结我不能再犯自以为是的错误,有两点明天要查明:

1。[]是不是map的重载符;

2。是不是调用[]时,先查找映射关系,若不存在就产生一个实例;

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值