C++中的unordered_map用法
當(dāng)你在C++中需要使用哈希表(無(wú)序映射)來(lái)管理鍵值對(duì)時(shí),unordered_map
是一個(gè)非常有用的數(shù)據(jù)結(jié)構(gòu)。以下是關(guān)于 unordered_map
的用法;
1. 概述
unordered_map
是 C++ STL(標(biāo)準(zhǔn)模板庫(kù))中的一個(gè)關(guān)聯(lián)容器,用于存儲(chǔ)鍵值對(duì)。它基于哈希表實(shí)現(xiàn),可以實(shí)現(xiàn)快速的插入、查找和刪除操作,時(shí)間復(fù)雜度接近常數(shù)級(jí)別。
2. 包含頭文件
在使用 unordered_map
之前,需要包含 <unordered_map>
頭文件:
#include <unordered_map>
3. 聲明和初始化
可以使用以下語(yǔ)法來(lái)聲明和初始化一個(gè) unordered_map
:
unordered_map<KeyType, ValueType> myMap; // 聲明一個(gè)空的 unordered_map unordered_map<string, int> myMap = {{"apple", 5}, {"banana", 10}}; // 聲明并初始化一個(gè)包含鍵值對(duì)的 unordered_map
4. 插入和訪問(wèn)元素
可以使用 insert
或 emplace
函數(shù)向 unordered_map
中插入新的鍵值對(duì),并使用 []
運(yùn)算符或 at
函數(shù)來(lái)訪問(wèn)元素:
unordered_map<string, int> myMap; myMap.insert(make_pair("apple", 5)); // 插入鍵值對(duì) myMap.emplace("banana", 10); // 插入鍵值對(duì)(C++11 特性) int value1 = myMap["apple"]; // 使用 [] 運(yùn)算符訪問(wèn)元素 int value2 = myMap.at("banana"); // 使用 at 函數(shù)訪問(wèn)元素
5. 刪除元素
可以使用 erase
函數(shù)刪除指定鍵的元素:
unordered_map<string, int> myMap = {{"apple", 5}, {"banana", 10}}; myMap.erase("apple"); // 刪除鍵為 "apple" 的元素
6. 查找元素
可以使用 find
函數(shù)查找指定鍵的元素,返回指向該元素的迭代器,如果未找到則返回 unordered_map::end()
:
unordered_map<string, int> myMap = {{"apple", 5}, {"banana", 10}}; auto it = myMap.find("apple"); if (it != myMap.end()) { cout << "Found: " << it->first << " -> " << it->second << endl; } else { cout << "Not found" << endl; }
7. 遍歷元素
可以使用迭代器來(lái)遍歷 unordered_map
中的所有元素:
unordered_map<string, int> myMap = {{"apple", 5}, {"banana", 10}}; for (auto it = myMap.begin(); it != myMap.end(); ++it) { cout << it->first << " -> " << it->second << endl; }
以上就是關(guān)于 unordered_map
的基本用法文檔。使用 unordered_map
可以方便地實(shí)現(xiàn)對(duì)鍵值對(duì)的管理和操作,適用于各種需要快速查找和插入元素的場(chǎng)景。
到此這篇關(guān)于C++中的unordered_map用法的文章就介紹到這了,更多相關(guān)C++ unordered_map內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C++11中隱式類型轉(zhuǎn)換的實(shí)現(xiàn)示例
C++類型轉(zhuǎn)換分為:隱式類型轉(zhuǎn)換和顯式類型轉(zhuǎn)換,本文主要介紹了C++11中隱式類型轉(zhuǎn)換的實(shí)現(xiàn)示例,具有一定的參考價(jià)值,感興趣的可以了解一下2024-06-06C語(yǔ)言中結(jié)構(gòu)體封裝全局變量用法說(shuō)明
這篇文章主要介紹了C語(yǔ)言中結(jié)構(gòu)體封裝全局變量用法說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-08-08C++?Socket實(shí)現(xiàn)TCP與UDP網(wǎng)絡(luò)編程
本文主要介紹了C++?Socket實(shí)現(xiàn)TCP與UDP網(wǎng)絡(luò)編程,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-01-01輕松實(shí)現(xiàn)C/C++各種常見(jiàn)進(jìn)制相互轉(zhuǎn)換
這篇文章主要介紹了輕松實(shí)現(xiàn)C/C++各種常見(jiàn)進(jìn)制相互轉(zhuǎn)換,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-11-11C++實(shí)現(xiàn)讀取圖片長(zhǎng)度和寬度
這篇文章主要介紹了C++實(shí)現(xiàn)讀取圖片長(zhǎng)度和寬度,本文直接給出實(shí)現(xiàn)代碼,需要的朋友可以參考下2015-04-04C++中實(shí)現(xiàn)線程安全和延遲執(zhí)行詳解
這篇文章主要為大家詳細(xì)介紹了C++中實(shí)現(xiàn)線程安全和延遲執(zhí)行的相關(guān)知識(shí),文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,需要的小伙伴可以了解下2024-01-01C語(yǔ)言中實(shí)現(xiàn)自定義數(shù)據(jù)類型的輸入輸出的方法和技巧
在 C 語(yǔ)言中,除了基本的數(shù)據(jù)類型(如整型、浮點(diǎn)型、字符型等),我們還經(jīng)常需要自定義數(shù)據(jù)類型來(lái)滿足特定的編程需求,所以本文給大家介紹了C語(yǔ)言中實(shí)現(xiàn)自定義數(shù)據(jù)類型的輸入輸出的方法和技巧,需要的朋友可以參考下2024-07-07