商務英語計算機英語

c語言中map的用法可以用來做什麼

本文已影響 6.28K人 

C++中map容器提供一個鍵值對容器,那麼你知道map的用法有哪些嗎,下面本站小編就跟你們詳細介紹下c語言中map的用法,希望對你們有用。

ing-bottom: 74.84%;">c語言中map的用法可以用來做什麼
  c語言中map的用法:map基本用法

1. 頭檔案

複製程式碼 程式碼如下:

#include <map>

2. 定義

複製程式碼 程式碼如下:

map<int,int> my_Map; //注意這裡的int和int可以是其他型別

或者是

複製程式碼 程式碼如下:

typedef map<int,int> MY_MAP;

MY_MAP my_Map;

3. 插入資料

(1) my_Map[1] = 1;

(2) my_rt(map<int, int>::value_type(2,2));

(3) my_rt(pair<int,int>(3,3));

(4) my_rt(make_pair<string,int>(4,4));

4. 查詢資料和修改資料

(1)

複製程式碼 程式碼如下:

int i = my_Map[1];

my_Map[1] = i;

(2)

複製程式碼 程式碼如下:

MY_MAP::iterator my_Itr;

my_(2);

int j = my_Itr->second;

my_Itr->second = j;

注意:

A.鍵本身是不能被修改的,除非刪除。

B.不管鍵存不存在,比如my_Map[1] = i;,都會執行賦值操作。

5. 刪除資料

(1) my_e(my_Itr);

(2) my_e(3);

6. 遍歷資料

複製程式碼 程式碼如下:

for(my_Itr=my_n();my_Itr!=my_();++my_Itr){}

7. 其它方法

my_() :返回元素數目

my_y():判斷是否為空

my_r() :清空所有元素

  c語言中map的用法:巢狀用法

1.示例如下:

複製程式碼 程式碼如下:

map<int,map<int,int> >multiMap; //對於這樣的map巢狀定義,

map<int, int> temp; //定義一個map<int, string>變數,對其定義後在插入multiMap

temp[9] = 9;

temp[10] = 10;

multiMap[10] = temp;

multiMap[10][11]=11;

multiMap[5][30]=30;

map<int,map<int,int> >::iterator multitr; // 以下是如何遍歷本multiMap

map<int,int>::iterator intertr;

for(multitr=n();multitr!=();multitr++)

{

for(intertr= multitr ->n(); intertr != multitr ->(); intertr ++)

cout<< multitr ->first<<" "<<intertr->first<<" ("<<intertr -> second <<")"<<endl;

}

2.也可以這樣:

複製程式碼 程式碼如下:

map<int,map<int,int>* >multiMap;

map<int, int>* temp = new map<int, int>;

multiMap[10]=temp;

這樣動態new記憶體,就要記得delete,否則會有記憶體洩露,delete如下:

複製程式碼 程式碼如下:

map<int, int>* temp1;

for(multitr=n();multitr!=();multitr++)

{

temp1 = multitr ->second;

delete temp1;

temp1 = NULL;

}

  c語言中map的用法

1 標頭檔案

#include

2、map的功能

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

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

快速插入Key - Value 記錄。

快速刪除記錄

根據Key 修改value記錄。

遍歷所有記錄。

3,

map的建構函式

map共提供了6個建構函式,這塊涉及到記憶體分配器這些東西,略過不表,在下面我們將接觸到一些map的構造方法,這裡要說下的就是,我們通常用如下方法構造一個map:

Map mapStudent;

定義

map my_Map;

或者是typedef map MY_MAP;

MY_MAP my_Map;

4, 插入資料

(1) my_Map["a"] = 1;

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

enumMap[1] = "One";

enumMap[2] = "Two";

.....

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

rt(map :: value_type(2, "Two"))

(2) my_rt(map::value_type("b",2));

(3) my_rt(pair("c",3));

(4) my_rt(make_pair("d",4));

note : 如果相同元素放入到map中就是操作失敗,此處可應用於看看map中是否有此元素,插入判斷,防止程式碼實現功能錯誤

5.

查詢並獲取map中的元素

下標操作符給出了獲得一個值的最簡單方法:

CString tmp = enumMap[2];

但是,只有當map中有這個鍵的例項時才對,否則會自動插入一個例項,值為初始化值。

我們可以使用Find()和Count()方法來發現一個鍵是否存在。

查詢map中是否包含某個關鍵字條目用find()方法,傳入的引數是要查詢的key,在這裡需要提到的是begin()和end()兩個成員,分別代表map物件中第一個條目和最後一個條目,這兩個資料的型別是iterator.

int nFindKey = 2; //要查詢的Key

//定義一個條目變數(實際是指標)

UDT_MAP_INT_CSTRING::iterator it= (nFindKey);

if(it == ()) {

//沒找到

}

else {

//找到

}

6, 迭代資料

for (my_Itr=my_n(); my_Itr!=my_(); ++my_Itr) {}

7,map的大小

在往map裡面插入了資料,我們怎麼知道當前已經插入了多少資料呢,可以用size函式,用法如下:

Int nSize = ();

8,,資料的清空與判空

清空map中的資料可以用clear()函式,判定map中是否有資料可以用empty()函式,它返回true則說明是空map

9,

//如果要刪除1,用迭代器刪除

map::iterator iter;

iter = (1);

e(iter);

//如果要刪除1,用關鍵字刪除

Int n = e(1);//如果刪除了會返回1,否則返回0

//用迭代器,成片的刪除

//一下程式碼把整個map清空

e(n(), ());

//成片刪除要注意的是,也是STL的特性,刪除區間是一個前閉後開的集


猜你喜歡:

1.c語言double的用法

2.c語言中fprintf的用法

3.c語言中怎麼畫圖

4.c語言flag的用法

5.C語言程式中什麼是函式

猜你喜歡

熱點閱讀

最新文章

推薦閱讀