其中我们可以见到调用
[]
就相当于执行
下面我们来分析这段代码:
make_pair(k,mapped_type()
- 创建一个pair对象,内容 k—value缺省值
this->insert(make_pair(k,mapped_type())
- 插入第一步创建的pair对象
成功,返回pair<pair对象的迭代器,true>
失败,返回pair<已经存在键值为k的pair对象迭代器,false>
(this->insert(make_pair(k,mapped_type()))).first
- 获取插入返回值的first成员:是一个map中pair对象的迭代器
*((this->insert(make_pair(k,mapped_type()))).first)
- 解引用3中的迭代器:解引用之后为map中的pair对象
(*((this->insert(make_pair(k,mapped_type()))).first)).second
- 获取4中pair对象的second成员:key对应的value
成功,v是缺省值
失败,v不是缺省值