在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

什么是 map?

汽車電子技術 ? 來源:C語言Plus ? 作者: Maye426 ? 2023-02-27 15:41 ? 次閱讀

一、什么是 map?

map 容器,又稱鍵值對容器,即該容器的底層是以紅黑樹變體實現的,是典型的關聯式容器。這意味著,map 容器中的元素可以分散存儲在內存空間里,而不是必須存儲在一整塊連續的內存空間中。跟任意其它類型容器一樣,它能夠存放各種類型的對象。

二、容器特性

1.存儲結構

map是由多個節點(二叉樹中的紅黑樹變體)組成的。

2.鍵值對

map是一個鍵值對序列,即(key,value)——封裝在結構體pair中,它提供基于key的快速檢索能力,不能在指定位置插入,但支持at(pos)和[]操作。如:map[key]=value;

multimap與map的區別:map中的key只能唯一,每個key只能出現一次;而multimap中同一key可以出現多次。

3.雙向迭代器

不支持隨機訪問迭代器,只能從容器中第一個元素或最后一個元素開始遍歷容器,直到找到該位置。

三、基本函數實現

1,構造函數

  • map();創建一個空map
  • map(const map&);復制構造函數
  • map(begin,end);復制[begin,end)區間內的元素,到另一個map中

2.map插入

  • pair insert(const T& x); //往容器插入元素,返回pair

    在map中插入元素的三種方式:

    假設 map mapStu;

    一、通過pair的方式插入對象

    mapStu.insert( pair(3,"小張") );

    二、通過pair的方式插入對象

    mapStu.inset(make_pair(-1, “校長-1”));

    三、通過value_type的方式插入對象

    mapStu.insert( map::value_type(1,"小李") );

    四、通過索引(key)的方式插入值

    mapStu[3] = “小劉";

    mapStu.at(4) = “小王";

    • 注意:使用key的方式插入,當key存在時會直接修改key對應的值,當key不存在時會新建一個然后插入

3.map刪除

  • iterator erase(iterator it);刪除鍵值對中迭代器指向元素
  • iterator erase(iterator first,iterator last);刪除鍵值對中[first,last)中元素
  • size_type erase(const key_type& key); 刪除指定的元素
  • void clear();清空鍵值對中所有元素

4.查找函數

  • iterator map.find(key); 查找鍵key是否存在,若存在,返回該鍵的元素的迭代器;若不存在,返回map.end();

  • size_type map.count(keyElem); //返回容器中key為keyElem的對組個數。對map來說,要么是0,要么是1。對multimap來說,值可能大于1。

  • pair map.equal_range(keyElem); //返回容器中key與keyElem相等的上下限的兩個迭代器。上限是閉區間,下限是開區間,如[beg,end)。

    以上函數返回兩個迭代器,而這兩個迭代器被封裝在pair中。

5.判斷函數

  • bool empty() const;判斷容器中是否有元素,若無元素,則返回 true;反之,返回 false。

6.大小函數

  • int size() const;返回鍵值對中元素的個數
  • int max_size() const;返回最大可允許的map元素數量值

7.其他函數

  • void swap(map&);交換兩個同類型容器的數據

四、基本用法

#include 
#include
using namespace std;
int main()
{
  //保存學生學號和姓名
  map<int,string> s;
  for (int i = 0; i < 10; i++)
  {
    string ch = "ABCDEFGHIJ";
    string name= "maye";
    //注意pair的類型參數,需要和map的一致
    s.insert(pair<int,string>(i,name+ch[i]));
  }
  s.insert(make_pair(111, "C語言PLUS"));
  s.insert(map<int, string>::value_type(222, "法外狂徒"));
  s[333] = "頑石";


  cout << "學號:" <<" "<< "姓名:" << endl;
  for (map<int, string>::iterator it = s.begin(); it != s.end(); it++)
  {
    cout << it->first << "      " << it->second << endl;
  }
  //cout << "\\nmap size():" << s.size() << endl;


  //查找指定的key值,返回指向的迭代器,沒有找到返回end()迭代器,所以再輸出之前需要判斷是否找到
  map<int, string>::iterator it1 = s.find(6);
  if (it1 != s.end())
  {
    cout << it1->first << " " << it1->second << endl;
  }
  //如果map中有等于4的key,則返回指向4的迭代器,如果沒有返回第一個大于4的元素的迭代器,沒有找到返回end()迭代器
  it1 = s.lower_bound(4);
  if (it1 != s.end())
  {
    cout << it1->first << " " << it1->second << endl;
  }
  //如果map中有大于4的key,返回第一個大于4的元素的迭代器,沒有找到返回end()迭代器
  it1 = s.upper_bound(4);
  if (it1 != s.end())
  {
    cout << it1->first << " " << it1->second << endl;
  }
  cout << "------------------我是 C語言Plus 華麗分割線" << endl;
  //定義對組,接受equal_range()的返回值
  pair
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 容器
    +關注

    關注

    0

    文章

    495

    瀏覽量

    22062
  • MAP
    MAP
    +關注

    關注

    0

    文章

    49

    瀏覽量

    15144
  • 元素
    +關注

    關注

    0

    文章

    47

    瀏覽量

    8435
收藏 人收藏

    評論

    相關推薦

    【Linux編程】如何使用gcc編譯源代碼時輸出map文件?

    【Linux編程】如何使用gcc編譯源代碼時輸出map文件?
    的頭像 發表于 08-15 14:08 ?8271次閱讀
    【Linux編程】如何使用gcc編譯源代碼時輸出<b class='flag-5'>map</b>文件?

    C++之map/mutimap容器

    map/multimap容器,也是一個關聯式容器,底層通過二叉樹實現。
    的頭像 發表于 07-17 09:45 ?1103次閱讀
    C++之<b class='flag-5'>map</b>/mutimap容器

    基于Google Map Api的Android導航應用

    本文提出并實現了一種基于Google Map Api 的Android 導航應用,能夠給用戶提供人性化和智能化的地圖導航服務。
    發表于 11-21 15:09 ?5231次閱讀

    Map Service Engine Based On We

    Abstract:A design and implementation of map service engine based on web is introduced
    發表于 07-23 10:43 ?17次下載

    MAP圖對調速電機的作用

    MAP圖對調速電機的作用,學習資料,感興趣的可以看看。
    發表于 10-26 15:12 ?0次下載

    紋理映射技術中Mip_Map的研究_曾云

    紋理映射技術中Mip_Map的研究_曾云
    發表于 03-15 11:08 ?0次下載

    基于DSP的Max-Log-MAP算法解析

    是近年來研究工作的熱點。Turbo碼采用反饋迭代譯碼結構,成員譯碼器使用最大后驗概率(MAP)譯碼算法譯碼,由于MAP算法含有大量的指數運算與對數運算,給實現帶來極大的困難,在工程應用中,通常采用其對數域的簡化算法Log-MAP
    發表于 11-04 10:47 ?5次下載
    基于DSP的Max-Log-<b class='flag-5'>MAP</b>算法解析

    mapreduce 中MAP進程的數量怎么控制?

    1.如果想增加map個數,則設置mapred.map.tasks 為一個較大的值2.如果想減小map個數,則設置mapred.min.split.size 為一個較大的值3.如果輸入中有很多小文件,依然想減少
    發表于 01-02 14:04 ?1890次閱讀
    mapreduce 中<b class='flag-5'>MAP</b>進程的數量怎么控制?

    Mapreduce和Hive中map reduce個數設定

    Mapreduce中mapper個數的確定: 在map階段讀取數據前,FileInputFormat會將輸入文件分割成split。split的個數決定了map的個數。 影響map個數,即split
    發表于 01-02 14:21 ?6115次閱讀

    mapreduce設置map個數_mapreduce設置map內存

    map階段讀取數據前,FileInputFormat會將輸入文件分割成split,split的個數決定了map的個數。
    發表于 01-02 14:26 ?1.1w次閱讀
    mapreduce設置<b class='flag-5'>map</b>個數_mapreduce設置<b class='flag-5'>map</b>內存

    Java Map的幾種循環方式學習總結

    本文檔內容介紹了基于Java Map的幾種循環方式學習總結,供參考
    發表于 03-19 15:51 ?0次下載

    MDK- ARM中map文件全解析

    MDK-ARM中map文件全解析
    的頭像 發表于 03-14 14:00 ?6065次閱讀
    MDK- ARM中<b class='flag-5'>map</b>文件全解析

    單片機中的MAP文件分析

    一、要讓Keil生成map文件,要設置:再重新編譯,沒有錯誤后,就會生成map文件了。二、map文件中相關概念:段(section) :描述映像文件的代碼和數據塊。RO:Read-Only的縮寫
    發表于 11-15 10:36 ?12次下載
    單片機中的<b class='flag-5'>MAP</b>文件分析

    MAP傳感器有什么作用?是如何工作的?

    MAP是歧管絕對壓力的縮寫。該MAP傳感器通過測量進氣歧管中的空氣量來檢測進入發動機的空氣量。然后,ECU使用此空氣測量來管理注入發動機的汽油量并修改點火正時,這兩者都對您的發動機正常運行至關重要。
    發表于 05-23 15:32 ?2464次閱讀
    <b class='flag-5'>MAP</b>傳感器有什么作用?是如何工作的?

    List 轉 Map的方法

    在我們平時的工作中,充滿了各種類型之間的轉換。今天小編帶大家上手 List 轉 Map 的各種操作。 我們將假設 List 中的每個元素都有一個標識符,該標識符將在生成的 Map 中作為一個鍵
    的頭像 發表于 10-09 16:10 ?1634次閱讀
    主站蜘蛛池模板: 国产香蕉精品视频在| 亚洲综合在线观看一区www| 欧美亚洲第一区| 黄色国产精品| 欧美成人亚洲欧美成人| 欧美综合影院| 天天干天天操天天摸| 日本在线一区二区| 欧洲妇女成人淫片aaa视频| 天天综合天天操| 色吧色吧色吧网| 免费人成在线观看网站| 欧美69色| 亚洲综合色站| 日日噜噜爽爽狠狠视频| 一级片免费观看视频| 黄色理伦| 亚洲艹| 99久久免费精品视频| 久久精品久久久| 男人的午夜影院| 免费的国语一级淫片| 久久国产乱子伦精品免费午夜 | 国卡一卡二卡三免费网站| 男人的天堂色偷偷| 狠久久| 色婷婷基地| 色婷婷六月桃花综合影院| 依人成人| www成人在线观看| 亚洲一区二区三区免费看| 免费看日本黄色片| 成人黄色三级| 日韩精品在线一区二区| 丁香六月色婷婷综合网| 国产午夜不卡在线观看视频666| 性欧美久久| 天天做天天爱夜夜想毛片| 2021国产成人精品国产| 美女被色| 免费黄色欧美|