国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

C++:關(guān)聯(lián)式容器:unordered_map

這篇具有很好參考價值的文章主要介紹了C++:關(guān)聯(lián)式容器:unordered_map。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

目錄

1.unordered_ map特性

2. 常用接口的使用

1.insert

???????? 2.find

3.erase

?4.operator[ ]

?3.迭代器的有效性


1.unordered_ map特性

c++ unordered_map,c++

1. unordered_map是存儲<key, value>鍵值對的關(guān)聯(lián)式容器,其允許通過keys快速的索引到與
其對應(yīng)的value。

2. 在unordered_map中,鍵值通常用于惟一地標識元素,而映射值是一個對象,其內(nèi)容與此
鍵關(guān)聯(lián)。鍵和映射值的類型可能不同。

3. 在內(nèi)部,unordered_map沒有對<kye, value>按照任何特定的順序排序, 為了能在常數(shù)范圍內(nèi)
找到key所對應(yīng)的value,unordered_map將相同哈希值的鍵值對放在相同的桶中。

4. unordered_map容器通過key訪問單個元素要比map快,但它通常在遍歷元素子集的范圍迭
代方面效率較低。

5. unordered_maps實現(xiàn)了直接訪問操作符(operator[]),它允許使用key作為參數(shù)直接訪問
value。

6. 它的迭代器至少是前向迭代器。

2. 常用接口的使用

1.insert

c++ unordered_map,c++

向unordered_map中插入新元素。每個元素的鍵與容器中其他元素的鍵不相等時才會被插入(unordered_map中的鍵是唯一的)。
插入元素的數(shù)量會有效地增加容器的大小。

插入范圍:[first, last),范圍包含first和last之間的所有元素,包括first指向的元素,但不包括last指向的元素。

#include <iostream>
#include <string>
#include <unordered_map>
using namespace std;

int main()
{
    unordered_map<string, double> myrecipe, mypantry = { {"milk",2.0},{"flour",1.5} };

    pair<string, double> myshopping("baking powder", 0.3);

    myrecipe.insert(myshopping);                       
    myrecipe.insert(make_pair<string, double>("eggs", 6.0)); 
    myrecipe.insert(mypantry.begin(), mypantry.end());  
    myrecipe.insert({ {"sugar",0.8},{"salt",0.1} });   

    cout << "myrecipe contains:" << endl;
    for (auto& x : myrecipe)
        cout << x.first << ": " << x.second << endl;

    cout << endl;
    return 0;
}

c++ unordered_map,c++

2.find

c++ unordered_map,c++

獲取元素的迭代器

在容器中搜索鍵為k的元素,如果找到則返回指向該元素的迭代器,否則返回指向unordered_map::end(容器末尾之后的元素)的迭代器。
也可以使用or operator[]的成員函數(shù)直接訪問映射后的值。

#include <iostream>
#include <string>
#include <unordered_map>
using namespace std;

int main()
{
    unordered_map<std::string, double> mymap = {
       {"mom",5.4},
       {"dad",6.1},
       {"bro",5.9} };

    string input;
    cout << "who? ";
    getline(cin, input);

    unordered_map<string, double>::const_iterator got = mymap.find(input);

    if (got == mymap.end())
        cout << "not found";
    else
        cout << got->first << " is " << got->second;

    cout << endl;

    return 0;
}

c++ unordered_map,c++

3.erase

c++ unordered_map,c++

從unordered_map容器中刪除單個元素或一組元素[first,last)。

返回一個迭代器,指向最后一個被擦除的元素之后的位置。?

#include <iostream>
#include <string>
#include <unordered_map>
using namespace std;

int main()
{
    unordered_map<string, string> mymap;

    // 填充容器
    mymap["U.S."] = "Washington";
    mymap["U.K."] = "London";
    mymap["France"] = "Paris";
    mymap["Russia"] = "Moscow";
    mymap["China"] = "Beijing";
    mymap["Germany"] = "Berlin";
    mymap["Japan"] = "Tokyo";

    // 進行刪除
    mymap.erase(mymap.begin());      // 通過迭代器刪除
    mymap.erase("France");             // 通過key刪除
    mymap.erase(mymap.find("China"), mymap.end()); // 通過范圍進行刪除

    
    for (auto& x : mymap)
        cout << x.first << ": " << x.second << endl;

    return 0;
}

c++ unordered_map,c++

?4.operator[ ]

c++ unordered_map,c++

訪問元素

如果k與容器中元素的鍵匹配,則該函數(shù)返回其映射值的引用。
如果k與容器中任何元素的鍵都不匹配,該函數(shù)將插入一個具有該鍵的新元素,并返回其映射值的引用。注意,即使沒有映射值給元素(元素是使用其默認構(gòu)造函數(shù)構(gòu)造的),這樣做也會使容器大小增加1。

#include <iostream>
#include <string>
#include <unordered_map>
using namespace std;

int main()
{
    unordered_map<string, string> mymap;

    mymap["Bakery"] = "Barbara";  // 插入新元素
    mymap["Seafood"] = "Lisa";   
    mymap["Produce"] = "John";    

    string name = mymap["Bakery"];  
    mymap["Seafood"] = name;              

    mymap["Bakery"] = mymap["Produce"];   

    name = mymap["Deli"];      

    mymap["Produce"] = mymap["Gifts"];    

    for (auto& x : mymap) {
        cout << x.first << ": " << x.second << endl;
    }

    return 0;
}

c++ unordered_map,c++

?3.迭代器的有效性

在大多數(shù)情況下,插入后容器中的所有迭代器仍然有效。唯一的例外是當(dāng)此函數(shù)插入新元素時,這將強制重新散列(rehash)。在這種情況下,容器中的所有迭代器都失效。如果插入操作后的新容器大小超過其容量閾值則強制進行重新散列。文章來源地址http://www.zghlxwxcb.cn/news/detail-704778.html

到了這里,關(guān)于C++:關(guān)聯(lián)式容器:unordered_map的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 【C++】unordered_set與unordered_map的封裝

    【C++】unordered_set與unordered_map的封裝

    ??個人主頁:平凡的小蘇 ??學(xué)習(xí)格言:命運給你一個低的起點,是想看你精彩的翻盤,而不是讓你自甘墮落,腳下的路雖然難走,但我還能走,比起向陽而生,我更想嘗試逆風(fēng)翻盤 。 ?? C++專欄 : C++內(nèi)功修煉基地 家人們更新不易,你們的??點贊??和?關(guān)注?真的對我真

    2024年02月08日
    瀏覽(23)
  • 【C++】unordered_set 和 unordered_map 使用 | 封裝

    【C++】unordered_set 和 unordered_map 使用 | 封裝

    unordered_map官方文檔 unordered_set 官方文檔 set / map與unordered_set / unordered_map 使用功能基本相同,但是兩者的底層結(jié)構(gòu)不同 set/map底層是紅黑樹 unordered_map/unordered_set 底層是 哈希表 紅黑樹是一種搜索二叉樹,搜索二叉樹又稱為排序二叉樹,所以 迭代器遍歷是有序的 而哈希表對應(yīng)的

    2024年02月06日
    瀏覽(25)
  • 【C++】unordered_map和unordered_set的使用

    【C++】unordered_map和unordered_set的使用

    文章目錄 前言 一、unordered_map的使用及性能測試 二、unordered_set的使用 1.習(xí)題練習(xí) 總結(jié) unordered 系列關(guān)聯(lián)式容器 : 在 C++98 中, STL 提供了底層為紅黑樹結(jié)構(gòu)的一系列關(guān)聯(lián)式容器,在查詢時效率可達到O(logN) ,即最差情況下需要比較紅黑樹的高度次,當(dāng)樹中的節(jié)點非常多時,

    2024年02月06日
    瀏覽(32)
  • unordered_map的4種遍歷方式(C++)

    c++ unordered_map4種遍歷方式 此處我通過移到LeetCode上的一道題來演示unordered_map的用法:題目鏈接 首先看一下題目題解: 這里定義了一個unordered_map: 方式一:值傳遞遍歷 可以使用aotu取代pairchar, int: 方式二:引用傳遞遍歷 此處需要 添加const 可以使用aotu取代pairchar, int: 方式三:

    2024年02月10日
    瀏覽(20)
  • 【C++】哈希表封裝實現(xiàn) unordered_map 和 unordered_set

    【C++】哈希表封裝實現(xiàn) unordered_map 和 unordered_set

    在 C++98 中,STL 提供了底層為紅黑樹結(jié)構(gòu)的一系列關(guān)聯(lián)式容器,在查詢時效率可達到 O(logN),即最差情況下只需要比較紅黑樹的高度次;但是當(dāng)樹中的節(jié)點非常多時,其查詢效率也不夠極致。 最好的查詢是,不進行比較或只進行常數(shù)次比較就能夠?qū)⒃卣业?,因此?C++11 中,

    2023年04月16日
    瀏覽(23)
  • C++進階--unordered_set、unordered_map的介紹和使用

    ??在C++98中,STL提供了底層為紅黑樹結(jié)構(gòu)的一系列關(guān)聯(lián)式容器,在查詢時效率可達到 l o g 2 N log_2N l o g 2 ? N ,即最差情況下需要比較紅黑樹的高度次,當(dāng)樹中的節(jié)點非常多時,查詢效率也不理想。最好的查詢是,進行很少的比較次數(shù)就能夠?qū)⒃卣业?,因此在C++11中,STL又

    2024年01月16日
    瀏覽(47)
  • 【C++】用哈希桶模擬實現(xiàn)unordered_set和unordered_map

    【C++】用哈希桶模擬實現(xiàn)unordered_set和unordered_map

    順序結(jié)構(gòu)中(數(shù)組)查找一個元素需要遍歷整個數(shù)組,時間復(fù)雜度為O(N);樹形結(jié)構(gòu)中(二叉搜索樹)查找一個元素,時間復(fù)雜度最多為樹的高度次logN。理想的搜索方法: 可以不經(jīng)過任何比較,一次直接從表中得到要搜索的元素。 構(gòu)造一種存儲結(jié)構(gòu), 通過某種函數(shù)使元素的

    2024年04月11日
    瀏覽(22)
  • 【C++】unordered_map和unordered_set的使用 及 OJ練習(xí)

    【C++】unordered_map和unordered_set的使用 及 OJ練習(xí)

    在前面的文章中,我們已經(jīng)學(xué)習(xí)了STL中底層為紅黑樹結(jié)構(gòu)的一系列關(guān)聯(lián)式容器——set/multiset 和 map/multimap(C++98) 在C++98中,STL提供了底層為紅黑樹結(jié)構(gòu)的一系列關(guān)聯(lián)式容器,在查詢時效率可達到 l o g 2 N log_2 N l o g 2 ? N ,即最差情況下需要比較紅黑樹的高度次。 在C++11中,

    2024年02月11日
    瀏覽(21)
  • 【C++入門到精通】哈希 (STL) _ unordered_map _ unordered_set [ C++入門 ]

    【C++入門到精通】哈希 (STL) _ unordered_map _ unordered_set [ C++入門 ]

    歡迎各位大佬們的關(guān)顧,本文將介紹unordered系列容器以及其中的兩個重要成員: unordered_map 和 unordered_set 。unordered_map是一種無序的關(guān)聯(lián)容器,它使用哈希表來存儲鍵值對,并提供高效的插入、查找和刪除操作。在本文中,我們將首先介紹unordered_map的基本概念和特點,然后詳

    2024年02月08日
    瀏覽(20)
  • [C++]哈希表實現(xiàn),unordered_map\set封裝

    [C++]哈希表實現(xiàn),unordered_map\set封裝

    目錄 ??????? 前言: 1 哈希 1.1 為什么有哈希 1.2 哈希結(jié)構(gòu) 1.3 哈希沖突 ?2 閉散列 2.1 閉散列結(jié)點結(jié)構(gòu)和位置狀態(tài)表示 2.2 哈希類結(jié)構(gòu) 2.3 插入 2.4 查找 2.5 刪除 3 開散列 3.1 哈希表結(jié)點結(jié)構(gòu) 3.2 哈希表結(jié)構(gòu) 3.3 插入 3.4 查找、刪除 3.5 迭代器實現(xiàn) 4 map和set的封裝 4.1 map的封

    2024年02月08日
    瀏覽(20)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包