哈希表,auto遍歷


首先是c++中的哈希表和Python中的字典:

 

一.unordered_map

哈希表是一個鍵值對型容器,基於哈希表(hash_table)這種數據結構,理解上有些類似於字典,不同於基於紅黑樹的map。

 

頭文件:#include<unordered_map>

創建表 unordered_map<key,value> Map_name;

初始化 Map_name[key] = value(key,value 是指數據類型)

插入元素 ①Map_name[key]=value;
               ② Map_name.insert(pair<int,int>(key,value));
               ③ unordered_map<int,int>Map_name={{key1,value1},{key2,value2}};

查找鍵值 table_name.find(key)

創建迭代器 unordered_map<key,value>::iterator iterator_name;

用迭代器訪問元素的鍵值 it->first
用迭代器訪問元素的鍵值對應的元素值 it->second

常用函數:

Map_name.emty():空為真,非空為假。

Map_name.erase(key值):如果沒有找到返回0。

Map_name.find(要查找的值):找到的話,則返回key,不存在的話,返回.end(), 一般通過Map_name.find(key) == Map_name.end()來判斷key值是否存在。

Map_name.count(key)函數:用以統計key值在unordered_map中出現的次數。c++ unordered_map不允許有重復的key。因此,如果key存在,則count返回1,如果不存在,則count返回0。

 

 

2.auto遍歷

auto是聲明自動變量格式為for(元素類型 遍歷值:數組/容器),

之所以用auto是可以根據賦值自動推導出變量類型。

加&是引用,如果沒有&,每次遍歷都會給重新開辟空間存放遍歷的值,空間復雜度是O(n),而使用引用的話,即使用同一塊空間

同時,引用的情況下可以修改原來的值

 

 

此外還有 for(auto&& count: counts),其與for(auto& count: counts)的區別在於auto的推導是否受初始化值的影響。

auto&& 的推導收到初始化值的 value category 的影響。用左值初始化,推導得結果是一個左值引用;否則是一個右值引用。

auto& 的推導與初始化值的 value category 無關。

 

 

 

LeetCode大佬題解:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM