std map的insert和下標 訪問

2021-07-03 05:49:46 字數 542 閱讀 2538

在map中插入元素

改變map中的條目非常簡單,因為map類已經對操作符進行了過載

enummap[1] = "one";

enummap[2] = "two";

.....

這樣非常直觀,但存在乙個效能的問題。插入2時,先在enummap中查詢主鍵為2的項,沒發現,然後將乙個新的物件插入enummap,鍵是2,值是乙個空字串,插入完成後,將字串賦為"two"; 該方法會將每個值都賦為預設值,然後再賦為顯示的值,如果元素是類物件,則開銷比較大。我們可以用以下方法來避免開銷:

enummap.insert(map:: value_type(2, "two"))

insert()方法:若插入的元素的鍵值已經存在於map中,那麼插入就會失敗,不會修改元素的鍵對應的值;若鍵值在map中查不到,那麼就會將該新元素加到map中去。

下標[key]方法:若插入元素的鍵值已經存在於map中,那麼會更新該鍵值對應的值為新的元素的值;若該鍵值在map中找不到,那麼就會新建乙個鍵值為該鍵(key)的元素,並將key對應的值賦值為預設值(預設建構函式生成的物件)。

std map的insert和下標 訪問

在map中插入元素 改變map中的條目非常簡單,因為map類已經對操作符進行了過載 enummap 1 one enummap 2 two 這樣非常直觀,但存在乙個效能的問題。插入2時,先在enummap中查詢主鍵為2的項,沒發現,然後將乙個新的物件插入enummap,鍵是2,值是乙個空字串,插入完...

std map的insert和下標 訪問

在map中插入元素 改變map中的條目非常簡單,因為map類已經對操作符進行了過載 enummap 1 one enummap 2 two 這樣非常直觀,但存在乙個效能的問題。插入2時,先在enummap中查詢主鍵為2的項,沒發現,然後將乙個新的物件插入enummap,鍵是2,值是乙個空字串,插入完...

QMap和std map的遍歷

兩種遍歷方式都使用迭代器 1qmap使用iterator.key 和iterator.value 方法獲取第乙個或第二個元素的值。而std map使用iterator first iterator second 來獲取第乙個或第二個元素的值。qmapm ratiocfg qmap iterator ...