std::map的insert和下标[]访问
From: http://www.cnblogs.com/kex1n/archive/2011/11/16/2251520.html
?
在map中插入元素
改變map中的條目非常簡單,因?yàn)閙ap類已經(jīng)對[]操作符進(jìn)行了重載
enumMap[1] = "One";
enumMap[2] = "Two";
.....
這樣非常直觀,但存在一個性能的問題。插入2時,先在enumMap中查找主鍵為2的項(xiàng),沒發(fā)現(xiàn),然后將一個新的對象插入enumMap,鍵是2,值是一個空字符串,插入完成后,將字符串賦為"Two"; 該方法會將每個值都賦為缺省值,然后再賦為顯示的值,如果元素是類對象,則開銷比較大。我們可以用以下方法來避免開銷:
enumMap.insert(map<int, CString> :: value_type(2, "Two"))
?
?
insert()方法:若插入的元素的鍵值已經(jīng)存在于map中,那么插入就會失敗,不會修改元素的鍵對應(yīng)的值;若鍵值在map中查不到,那么就會將該新元素加到map中去。
下標(biāo)[key]方法:若插入元素的鍵值已經(jīng)存在于map中,那么會更新該鍵值對應(yīng)的值為新的元素的值;若該鍵值在map中找不到,那么就會新建一個鍵值為該鍵(key)的元素,并將key對應(yīng)的值賦值為默認(rèn)值(默認(rèn)構(gòu)造函數(shù)生成的對象)。
總結(jié)
以上是生活随笔為你收集整理的std::map的insert和下标[]访问的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ic启动器怎么导入模组_icmod模组管
- 下一篇: java成员变量的初始化