最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C++?容器中map和unordered?map區(qū)別詳解

 更新時(shí)間:2022年11月17日 16:01:46   作者:極智視界  
這篇文章主要為大家介紹了C++?容器中map和unordered?map區(qū)別示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

C++ 中 map 和 unordered_map區(qū)別

map 和 unordered_map 都可以看做是一種 key-value 的映射關(guān)系,unordered_map 可以理解為 無序版的map。unordered_map 是在 C++11 標(biāo)準(zhǔn)才出現(xiàn)的,所以你在代碼中如果使用了 unordered_map,則在編譯的時(shí)候要使用 c++11及以后的標(biāo)準(zhǔn) 進(jìn)行編譯。

這里直擊要點(diǎn):

  • map 底層是 紅黑樹,(1) 增、刪、改、查都是十分平穩(wěn)的 log(n) 的復(fù)雜度,(2) 基于二叉查找樹,數(shù)據(jù)是有序排列的 (按 key 排序)。在存儲(chǔ)上 map 比較占用空間,因?yàn)樵诩t黑樹中,每一個(gè)節(jié)點(diǎn)都要額外保存父節(jié)點(diǎn)和子節(jié)點(diǎn)的連接,因此使得每一個(gè)節(jié)點(diǎn)都占用較大空間來維護(hù)紅黑樹的性質(zhì)。
  • unordered_map 底層是 hash表, 其查找的復(fù)雜度是常數(shù)級(jí)別的 O(1),構(gòu)造的時(shí)候如果有沖突時(shí)間成本會(huì)增加,并且做不到數(shù)據(jù)有序排列。沖突的解決:當(dāng)沖突數(shù)小于8的時(shí)候用鏈?zhǔn)降刂贩ń鉀Q沖突,當(dāng)沖突大于8的時(shí)候使用紅黑樹解決沖突。

   來把區(qū)別用表格展示:

   map 和 unordered_map 在代碼使用上十分類似,來看看兩者的用法:

int main(){
  //// map 用法
  map<int, string> _ismap;
  // 增的三種方法
  _ismap.insert(make_pair(0, "kobe"));
  _ismap[1] = "james";
  _ismap.insert(map<int, string>::value_type(2, "curry"));
  // 遍歷
  for (auto &iter : _ismap){
    cout << iter.first << " : " << iter.second << endl;
    /*
    * 輸出如下 按key遞增排序
    * 0 : kobe
    * 1 : james
    * 2 : curry
    */
  }
  // 刪除
  map<int, string> ::iterator _mapIter = _ismap.find(0);
  _ismap.erase(_mapIter);    // 刪除指定的key
  // _ismap.erase(0);  // 刪除key=0的鍵值對(duì)
  // _ismap.erase(std::begin(_ismap));   // 刪除第一個(gè)鍵值對(duì)
  //// unordered_map 用法
  unordered_map<int, string> _isunorderedMap;
  // 增的三種方法
  _isunorderedMap.insert(make_pair(0, "yaoming"));
  _isunorderedMap[1] = "yi";
  _isunorderedMap.insert(unordered_map<int, string>::value_type(2, "zhouqi"));
  // 遍歷
  for (auto iter = unorderedMap.begin(); iter != unorderedMap.end(); iter++){
    cout << iter->first << " : " << iter->second << endl;
    /*
    * 輸出如下 亂序
    * 2 : zhouqi
    * 0 : yaoming
    * 1 : yi
    */
    // 刪除
    auto _unorderedIter = _isunorderedMap.find(0);
    _isunorderedMap.erase(_unorderedIter);     // 刪除指定的key
    // _unorderedIter.erase(0);    // 刪除key=0的鍵值對(duì)
    // _unorderedIter(_unorderedIter.begin());    // 刪除第一個(gè)鍵值對(duì)
  }
}

以上就是C++ 容器中map和unordered map區(qū)別詳解的詳細(xì)內(nèi)容,更多關(guān)于C++ map區(qū)別unordered map的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • c/c++單例模式類的混合編譯案例詳解

    c/c++單例模式類的混合編譯案例詳解

    ? 由于c語言中沒有類的概念,因此對(duì)于有類的cpp文件與c文件混合編譯時(shí),提供一個(gè)中間層提供類的操作接口,在c文件中調(diào)用接口實(shí)現(xiàn)間接操作類對(duì)象,這篇文章主要介紹了c/c++單例模式類的混合編譯的相關(guān)資料
    2022-10-10
  • 一文帶你了解C++中queue的使用

    一文帶你了解C++中queue的使用

    C++中的queue是一種容器,用于在FIFO(先進(jìn)先出)原則下存儲(chǔ)和管理元素。本篇文章將深入探討C++中的queue,包括它的定義、使用、原理和示例,感興趣的可以了解一下
    2023-04-04
  • 基于C語言實(shí)現(xiàn)掃雷小游戲

    基于C語言實(shí)現(xiàn)掃雷小游戲

    這篇文章主要為大家詳細(xì)介紹了基于C語言實(shí)現(xiàn)掃雷小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • C++?常量成員函數(shù)學(xué)習(xí)筆記

    C++?常量成員函數(shù)學(xué)習(xí)筆記

    這篇文章主要為大家介紹了C++?常量成員函數(shù)學(xué)習(xí)筆記,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-10-10
  • string,CString,char*之間的轉(zhuǎn)化

    string,CString,char*之間的轉(zhuǎn)化

    下面是MFC/C++/C中字符類型CString, int, string, char*之間的轉(zhuǎn)換的說明與舉例,經(jīng)常用的東西,相信對(duì)于用C/C++的朋友,還是比較有用的
    2013-03-03
  • Qt利用QNetwork實(shí)現(xiàn)上傳數(shù)據(jù)的示例代碼

    Qt利用QNetwork實(shí)現(xiàn)上傳數(shù)據(jù)的示例代碼

    這篇文章主要為大家詳細(xì)介紹了Qt如何利用QNetwork實(shí)現(xiàn)上傳數(shù)據(jù)的 功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-02-02
  • C++vector的insert函數(shù)用法小結(jié)

    C++vector的insert函數(shù)用法小結(jié)

    std::vector::insert是C++中用于在指定位置插入元素的函數(shù),支持插入單個(gè)元素、多個(gè)相同元素、一個(gè)范圍的元素或初始化列表中的元素,插入操作可能會(huì)使插入點(diǎn)之后的迭代器失效,并且時(shí)間復(fù)雜度為O(n),本文介紹C++vector的insert函數(shù)用法小結(jié),感興趣的朋友一起看看吧
    2025-03-03
  • QT連接SQLServer數(shù)據(jù)庫的實(shí)現(xiàn)

    QT連接SQLServer數(shù)據(jù)庫的實(shí)現(xiàn)

    要使用Qt連接SQL Server數(shù)據(jù)庫,需要使用Qt提供的SQL模塊和SQL Server驅(qū)動(dòng)程序,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-09-09
  • C++ 數(shù)據(jù)結(jié)構(gòu)之對(duì)稱矩陣及稀疏矩陣的壓縮存儲(chǔ)

    C++ 數(shù)據(jù)結(jié)構(gòu)之對(duì)稱矩陣及稀疏矩陣的壓縮存儲(chǔ)

    這篇文章主要介紹了C++ 數(shù)據(jù)結(jié)構(gòu)之對(duì)稱矩陣及稀疏矩陣的壓縮存儲(chǔ)的相關(guān)資料,這里實(shí)現(xiàn)稀疏矩陣和對(duì)稱矩陣的壓縮存儲(chǔ)的實(shí)例,需要的朋友可以參考下
    2017-08-08
  • C語言的語法風(fēng)格與代碼書寫規(guī)范指南

    C語言的語法風(fēng)格與代碼書寫規(guī)范指南

    這篇文章主要介紹了C語言的語法風(fēng)格與代碼書寫規(guī)范指南,文中主張了一些諸如變量和結(jié)構(gòu)體的命名規(guī)范等細(xì)節(jié)方面的問題,需要的朋友可以參考下
    2016-02-02

最新評(píng)論

荔波县| 蓝山县| 临潭县| 宁武县| 大同县| 贵阳市| 泸州市| 霍山县| 彝良县| 永清县| 英山县| 洛隆县| 偏关县| 平和县| 茶陵县| 盐源县| 赤城县| 调兵山市| 精河县| 县级市| 开封县| 突泉县| 广宁县| 宁波市| 乌什县| 龙泉市| 木兰县| 桦南县| 女性| 廊坊市| 宜兰市| 刚察县| 双辽市| 南宫市| 阿拉尔市| 祁连县| 灵山县| 余庆县| 筠连县| 兴业县| 富裕县|