map下标操作符

map是C++ STL中非常好用的关联容器,在我们的代码中,可以非常方便的运用下标操作符[]来操作它。

但是搞技术不能浅尝辄止,不仅要会用,还得知道其原理。不过其原理略为复杂,底层实现RB_tree不仅在树形的平衡上表现不错,具有稳定的对数平均时间O(lgn)的表现,在实现复杂度上也是惊人,这就导致了map迭代器的自增,自减,下标操作等非常复杂。

下面是下标操作符的实际操作:

template <class Key, class T,
          class Compare = less<Key>,
          class Alloc = alloc>
class map {
public:
// typedefs:
  typedef Key key_type;     //键值型别
  //map元素类型
  typedef pair<const Key& T> value_type;
  ...
public:
  T& operator[](const key_type& k) {
   return (*((insert(value_type(k,T()))).first)).second;
  }
  ...
};

(*((insert(value_type(k,T()))).first)).second

这段代码看起来真是恐怖,别急,拆解来看就很容易了。

先看第一步  

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值