亚洲高清vr播放在线观看,欧美亚洲精品免费,欧美日韩天堂在线视频,午夜福利小视频

      學習啦 > 學習英語 > 專業(yè)英語 > 計算機英語 > c語言中map的用法可以用來做什么

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

      時間: 長思709 分享

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

        C++中map容器提供一個鍵值對容器,那么你知道m(xù)ap的用法有哪些嗎,下面學習啦小編就跟你們詳細介紹下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. 插入數(shù)據(jù)

        (1) my_Map[1] = 1;

        (2) my_Map.insert(map<int, int>::value_type(2,2));

        (3) my_Map.insert(pair<int,int>(3,3));

        (4) my_Map.insert(make_pair<string,int>(4,4));

        4. 查找數(shù)據(jù)和修改數(shù)據(jù)

        (1)

        復制代碼 代碼如下:

        int i = my_Map[1];

        my_Map[1] = i;

        (2)

        復制代碼 代碼如下:

        MY_MAP::iterator my_Itr;

        my_Itr.find(2);

        int j = my_Itr->second;

        my_Itr->second = j;

        注意:

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

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

        5. 刪除數(shù)據(jù)

        (1) my_Map.erase(my_Itr);

        (2) my_Map.erase(3);

        6. 遍歷數(shù)據(jù)

        復制代碼 代碼如下:

        for(my_Itr=my_Map.begin();my_Itr!=my_Map.end();++my_Itr){}

        7. 其它方法

        my_Map.size() :返回元素數(shù)目

        my_Map.empty():判斷是否為空

        my_Map.clear() :清空所有元素

        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=multiMap.begin();multitr!=multiMap.end();multitr++)

        {

        for(intertr= multitr ->second.begin(); intertr != multitr ->second.end(); 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;

        這樣動態(tài)new內存,就要記得delete,否則會有內存泄露,delete如下:

        復制代碼 代碼如下:

        map<int, int>* temp1;

        for(multitr=multiMap.begin();multitr!=multiMap.end();multitr++)

        {

        temp1 = multitr ->second;

        delete temp1;

        temp1 = NULL;

        }

        c語言中map的用法

        1 頭文件

        #include

        2、map的功能

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

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

        快速插入Key - Value 記錄。

        快速刪除記錄

        根據(jù)Key 修改value記錄。

        遍歷所有記錄。

        3,

        map的構造函數(shù)

        map共提供了6個構造函數(shù),這塊涉及到內存分配器這些東西,略過不表,在下面我們將接觸到一些map的構造方法,這里要說下的就是,我們通常用如下方法構造一個map:

        Map mapStudent;

        定義

        map my_Map;

        或者是typedef map MY_MAP;

        MY_MAP my_Map;

        4, 插入數(shù)據(jù)

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

        改變map中的條目非常簡單,因為map類已經(jīng)對[]操作符進行了重載

        enumMap[1] = "One";

        enumMap[2] = "Two";

        .....

        這樣非常直觀,但存在一個性能的問題。插入2時,先在enumMap中查找主鍵為2的項,沒發(fā)現(xiàn),然后將一個新的對象插入enumMap,鍵是2,值是一個空字符串,插入完成后,將字符串賦為"Two"; 該方法會將每個值都賦為缺省值,然后再賦為顯示的值,如果元素是類對象,則開銷比較大。我們可以用以下方法來避免開銷:

        enumMap.insert(map :: value_type(2, "Two"))

        (2) my_Map.insert(map::value_type("b",2));

        (3) my_Map.insert(pair("c",3));

        (4) my_Map.insert(make_pair("d",4));

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

        5.

        查找并獲取map中的元素

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

        CString tmp = enumMap[2];

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

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

        查找map中是否包含某個關鍵字條目用find()方法,傳入的參數(shù)是要查找的key,在這里需要提到的是begin()和end()兩個成員,分別代表map對象中第一個條目和最后一個條目,這兩個數(shù)據(jù)的類型是iterator.

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

        //定義一個條目變量(實際是指針)

        UDT_MAP_INT_CSTRING::iterator it= enumMap.find(nFindKey);

        if(it == enumMap.end()) {

        //沒找到

        }

        else {

        //找到

        }

        6, 迭代數(shù)據(jù)

        for (my_Itr=my_Map.begin(); my_Itr!=my_Map.end(); ++my_Itr) {}

        7,map的大小

        在往map里面插入了數(shù)據(jù),我們怎么知道當前已經(jīng)插入了多少數(shù)據(jù)呢,可以用size函數(shù),用法如下:

        Int nSize = mapStudent.size();

        8,,數(shù)據(jù)的清空與判空

        清空map中的數(shù)據(jù)可以用clear()函數(shù),判定map中是否有數(shù)據(jù)可以用empty()函數(shù),它返回true則說明是空map

        9,

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

        map::iterator iter;

        iter = mapStudent.find(1);

        mapStudent.erase(iter);

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

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

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

        //一下代碼把整個map清空

        mapStudent.earse(mapStudent.begin(), mapStudent.end());

        //成片刪除要注意的是,也是STL的特性,刪除區(qū)間是一個前閉后開的集


      猜你喜歡:

      1.c語言double的用法

      2.c語言中fprintf的用法

      3.c語言中怎么畫圖

      4.c語言flag的用法

      5.C語言程序中什么是函數(shù)

      533257