天天看點

C++基礎:C++标準庫之map簡介

1、綜述

Map是C++STL中衆多的Container(容器)之一,與python的字典略類似,Map作為一個關聯容器,将key與value互相關聯,其中key為關鍵字,是不可更改的,而value是key值的相對應值。Map所提供的一對一的資料映射關系,在很多時候可以提供程式設計的極大便利。

Map内部通過自建紅黑樹(一種非嚴格意義上的平衡二叉樹)實作,可以對資料自動排序,因而在map内部的所有資料是有序存放的。Map具有的一大特點是增加和删除節點對疊代器的影響很小,除了那個操作節點,對其他的節點都沒有什麼影響。

Map具有如下的功能特點:

自動建立Key - value的對應。key 和 value可以是任意你需要的類型。

根據key值快速查找記錄,查找的複雜度基本是Log(N),如果有1000個記錄,最多查找10次,1,000,000個記錄,最多查找20次。

快速插入Key - Value 記錄。

快速删除記錄

根據Key 修改value記錄。

周遊所有記錄。

2、map的常見操作

首先,在使用map之前需包含頭檔案#include<map>,下面簡要介紹map的常見操作,詳細資訊可參見。

(1)構造函數:

示例中int是key的類型,string是value的類型,可以為其他類型,如map<char,float> Mymap4; 

(2)插入資料:有幾種方式,下面舉三類例子。

其中方式1簡單直覺,然而卻并不值得提倡,因其性能并不好。在插入key =

1的value=“one”時,需要首先在Mymap,查找主鍵1是否已經存在,若不存在,則将一個新的對象插入Mymap,其key為1,但value是一個空字元串,插入完成後,将value賦為"one";

該方法會首先将每個值都賦為預設值,然後再賦為顯示的值,如果元素是類對象,則開銷比較大。而另外的方法則有效避免了這一問題。

(3)查找元素:

利用find()方法,find()函數傳回一個疊代器指向鍵值為key的元素,如果沒找到就傳回指向map尾部的疊代器。

(4)删除元素:

采用erase()方法實作:

erase()也可以删除一個範圍如:

(5)swap()方法:

要注意的是,在map中swap()方法進行的是對于兩個map的交換,而非對map内兩個元素的交換。形如:

(6)size()方法:

傳回map的大小,即元素的個數。

(7)empty()方法

判斷map是否為空,若map為空,則傳回true。

(8)begin()方法:

傳回指向map頭部的疊代器

(9)end()方法:

傳回指向map尾部的疊代器

(10)count() 方法:

傳回指定元素出現的次數

3、常見操作程式執行個體

貼上一個簡單的程式集運作結果,以便于更好的了解。

C++基礎:C++标準庫之map簡介