中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

STL——map之各種容器的特點

發布時間:2020-08-10 18:06:16 來源:網絡 閱讀:684 作者:小止1995 欄目:編程語言

Map是STL的一個關聯容器,它提供一對一(其中第一個可以稱為關鍵字,每個關鍵字只能在map中出現一次,第二個可能稱為該關鍵字的值)的數據處理能力,由于這個特性,它完成有可能在我們處理一對一數據的時候,在編程上提供快速通道。map內部自建一顆紅黑樹(一種非嚴格意義上的平衡二叉樹),這顆樹具有對數據自動排序的功能,所以在map內部所有的數據都是有序的

 mymap.insert ( std::pair<char,int>('a',100) );
  mymap.insert ( std::pair<char,int>('z',200) );

  std::pair<std::map<char,int>::iterator,bool> ret;
  ret = mymap.insert ( std::pair<char,int>('z',500) );if(ret.second==false) {
    std::cout <<"element 'z' already existed";
    std::cout <<" with a value of "<< ret.first->second <<'\n';
  }


數據的查找(包括判定這個關鍵字是否在map中出現)

在這里我們將體會,map在數據插入時保證有序的好處。

要判定一個數據(關鍵字)是否在map中出現的方法比較多,這里標題雖然是數據的查找,在這里將穿插著大量的map基本用法。

這里給出三種數據查找方法

第一種:用count函數來判定關鍵字是否出現,其缺點是無法定位數據出現位置,由于map的特性,一對一的映射關系,就決定了count函數的返回值只有兩個,要么是0,要么是1,出現的情況,當然是返回1了

第二種:用find函數來定位數據出現位置,它返回的一個迭代器,當數據出現時,它返回數據所在位置的迭代器,如果map中沒有要查找的數據,它返回的迭代器等于end函數返回的迭代器。


數據的清空與判空

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

 

數據的刪除

Map<int,string> mapStudent;
mapStudent.insert(pair<int,string>(1,“student_one”));
mapStudent.insert(pair<int,string>(2,“student_two”));
mapStudent.insert(pair<int,string>(3,“student_three”));
//如果你要演示輸出效果,請選擇以下的一種,你看到的效果會比較好
//如果要刪除1,用迭代器刪除
map<int,string>::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的特性,刪除區間是一個前閉后開的集合

注:

List特點:元素有放入順序,元素可重復 

Set特點:元素無放入順序,元素不可重復(注意:元素雖然無放入順序,但是元素在set中的位置是有該元素的HashCode決定的,其位置其實是固定的) 

Map特點:元素按鍵值對存儲,無放入順序 (應該知道什么是鍵值對吧!)

List接口有三個實現類:LinkedList,ArrayList,Vector 

LinkedList:底層基于鏈表實現,鏈表內存是散亂的,每一個元素存儲本身內存地址的同時還存儲下一個元素的地址。鏈表增刪快,查找慢 

ArrayList和Vector的區別:ArrayList是非線程安全的,效率高;Vector是基于線程安全的,效率低 

Set接口有兩個實現類:HashSet(底層由HashMap實現),LinkedHashSet 

SortedSet接口有一個實現類:TreeSet(底層由平衡二叉樹實現) 

Query接口有一個實現類:LinkList 

Map接口有三個實現類:HashMap,HashTable,LinkeHashMap 

  HashMap非線程安全,高效,支持null;HashTable線程安全,低效,不支持null 

SortedMap有一個實現類:TreeMap 

其實最主要的是,list是用來處理序列的,而set是用來處理集的。Map是知道的,存儲的是鍵值對 

set 一般無序不重復.map kv 結構 list 有序。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

靖西县| 武陟县| 同仁县| 灵川县| 东莞市| 潜山县| 朝阳市| 乌鲁木齐县| 金阳县| 余干县| 道真| 德兴市| 财经| 新宁县| 丰原市| 如皋市| 眉山市| 曲靖市| 久治县| 桦甸市| 中牟县| 江陵县| 赤壁市| 海丰县| 灵山县| 仁怀市| 剑河县| 惠东县| 汝州市| 报价| 屯门区| 仪陇县| 佛冈县| 莲花县| 武平县| 满城县| 中卫市| 瑞安市| 清原| 宁都县| 巴中市|