• <output id="aynwq"><form id="aynwq"><code id="aynwq"></code></form></output>

    <mark id="aynwq"><option id="aynwq"></option></mark>
  • <mark id="aynwq"><option id="aynwq"></option></mark><label id="aynwq"><dl id="aynwq"></dl></label>
  • 學習啦 > 學習英語 > 專業英語 > 計算機英語 > c語言中map的用法可以用來做什么

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

    時間: 長思709 分享

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

      C++中map容器提供一個鍵值對容器,那么你知道map的用法有哪些嗎,下面學習啦小編就跟你們詳細介紹下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_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. 查找數據和修改數據

      (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;,都會執行賦值操作。

      5. 刪除數據

      (1) my_Map.erase(my_Itr);

      (2) my_Map.erase(3);

      6. 遍歷數據

      復制代碼 代碼如下:

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

      7. 其它方法

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

      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;

      這樣動態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可以是任意你需要的類型。

      根據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"; 該方法會將每個值都賦為缺省值,然后再賦為顯示的值,如果元素是類對象,則開銷比較大。我們可以用以下方法來避免開銷:

      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中是否有此元素,插入判斷,防止代碼實現功能錯誤

      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= enumMap.find(nFindKey);

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

      //沒找到

      }

      else {

      //找到

      }

      6, 迭代數據

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

      7,map的大小

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

      Int nSize = mapStudent.size();

      8,,數據的清空與判空

      清空map中的數據可以用clear()函數,判定map中是否有數據可以用empty()函數,它返回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的特性,刪除區間是一個前閉后開的集


    猜你喜歡:

    1.c語言double的用法

    2.c語言中fprintf的用法

    3.c語言中怎么畫圖

    4.c語言flag的用法

    5.C語言程序中什么是函數

    533257 主站蜘蛛池模板: 国产日韩精品在线| 妺妺窝人体色WWW在线观看| 国产91精品在线观看| 中文字幕亚洲欧美专区| 精品国产亚洲第一区二区三区| 少妇人妻在线视频| 亚洲综合在线观看视频| 2021国产麻豆剧| 日韩欧美中文字幕出| 四虎成人精品无码永久在线| 一级日本高清视频免费观看| 爆乳少妇在办公室在线观看| 国产精品毛片va一区二区三区| 久久精品视频大全| 翁想房中春意浓1-28| 天天做日日做天天添天天欢公交车| 亚洲日韩亚洲另类激情文学| 好吊妞视频这里只有精品| 日日夜夜天天干干| 伺候情侣主vk| 天堂va在线高清一区| 日批视频app| 人妻在线日韩免费视频| 中文乱码字幕午夜无线观看| 日产精品一致六区搬运| 免费无码成人AV在线播放不卡| 尤物视频www| 日本夜爽爽一区二区三区| 免费人妻精品一区二区三区| 手机看片福利日韩国产| 日本熟妇色熟妇在线视频播放| 免费特级黄毛片| 777奇米影视四色永久| 成人毛片免费观看| 亚洲欧洲日本在线| 都市激情亚洲色图| 女人l8毛片a一级毛片| 亚洲av无码成人精品区日韩| 精品无码国产一区二区三区麻豆 | 国产成人免费ā片在线观看| 一级特黄女**毛片|