operator [] for map and multimap

Gotchas:
1) When calling operator [] with a key (index) which doesn't exist in the map, a new key-value  pair gets inserted into the map automatically.
std::map<std::string,float> coll; // empty map
cout << coll["hello"] << endl;  // "hello" key doesn't exist in the map, pair<const string, float>("hello", 0) get inserted into the map automatically. This usually is not what we want.

2)  What is happening underneath for "coll["otto"] = 7.7;" ?  (It is a little bit slow !)
     a) Process coll["otto"] expression:
         - If an element with key "otto" exists, the expression returns the value of the element by reference
         - If, as in this example, no element with key "otto" exists, the expression inserts a new element
           automatically, with "otto" as key and the value of the default constructor of the value type as
           the element value. It then returns a reference to that new value of the new element.

     b)  Assign value 7.7:
         - The second part of the statement assigns 7.7 to the value of the new or existing element.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值