巧用map下标操作符

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值