在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如下:

本文详细解析了C++标准库中map容器的下标操作符[]的使用方法及特性,包括其如何在关键字不存在时自动插入元素,并对类类型和基本数据类型的默认初始化进行说明,同时提供了代码示例。
2636

被折叠的 条评论
为什么被折叠?



