在cppreference.com用户手册中,map::operator[] 定义如下:
T& operator[]( const Key& key );
若关键字key不存在则插入 value_type(key, T()) 。此函数等价于 return insert(std::make_pair(key, T())).first->second;
-key_type 必须满足可复制构造 (CopyConstructible) 的要求。 | ||
-mapped_type 必须满足可复制构造 (CopyConstructible) 和 可默认构造 (DefaultConstructible) 的要求。 |
若进行插入,则值初始化被映射值(对类类型为默认构造,否则为零初始化)并返回到它的引用。
1.用下标操作符 [],代替 insert(make_pair(key,T()) 进行插入操作,仍然保留map按关键字key从大到小的特性。demo如下:
输出:
2.用下标操作[key],如果关键字key不存在,则对类类型调用默认构造函数(如string),对基本数据类型用零作为初始值。demo如下:
输出:
3. 当用value值表示累加值时,直接使用 “+=” 操作符,无需判断key是否存在。推荐使用写法二。demo如下: