C++中的unordered_map用法
當(dāng)你在C++中需要使用哈希表(無序映射)來管理鍵值對(duì)時(shí),unordered_map 是一個(gè)非常有用的數(shù)據(jù)結(jié)構(gòu)。以下是關(guān)于 unordered_map 的用法;
1. 概述
unordered_map 是 C++ STL(標(biāo)準(zhǔn)模板庫)中的一個(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. 聲明和初始化
可以使用以下語法來聲明和初始化一個(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. 插入和訪問元素
可以使用 insert 或 emplace 函數(shù)向 unordered_map 中插入新的鍵值對(duì),并使用 [] 運(yùn)算符或 at 函數(shù)來訪問元素:
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)算符訪問元素
int value2 = myMap.at("banana"); // 使用 at 函數(shù)訪問元素
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. 遍歷元素
可以使用迭代器來遍歷 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-06
C++?Socket實(shí)現(xiàn)TCP與UDP網(wǎng)絡(luò)編程
本文主要介紹了C++?Socket實(shí)現(xiàn)TCP與UDP網(wǎng)絡(luò)編程,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-01-01
輕松實(shí)現(xiàn)C/C++各種常見進(jìn)制相互轉(zhuǎn)換
這篇文章主要介紹了輕松實(shí)現(xiàn)C/C++各種常見進(jìn)制相互轉(zhuǎn)換,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-11-11
C++中實(shí)現(xiàn)線程安全和延遲執(zhí)行詳解
這篇文章主要為大家詳細(xì)介紹了C++中實(shí)現(xiàn)線程安全和延遲執(zhí)行的相關(guān)知識(shí),文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,需要的小伙伴可以了解下2024-01-01
C語言中實(shí)現(xiàn)自定義數(shù)據(jù)類型的輸入輸出的方法和技巧
在 C 語言中,除了基本的數(shù)據(jù)類型(如整型、浮點(diǎn)型、字符型等),我們還經(jīng)常需要自定義數(shù)據(jù)類型來滿足特定的編程需求,所以本文給大家介紹了C語言中實(shí)現(xiàn)自定義數(shù)據(jù)類型的輸入輸出的方法和技巧,需要的朋友可以參考下2024-07-07

