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。是不是调用[]时,先查找映射关系,若不存在就产生一个实例;

 

 

阅读更多
文章标签: 生活 class 工作
上一篇锻炼身体与注意休息
下一篇SubClassItem
想对作者说点什么? 我来说一句

Tiled Map使用碰撞检测

2011年04月21日 10.07MB 下载

Android Google map使用

2013年08月04日 34KB 下载

没有更多推荐了,返回首页

关闭
关闭