首先是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大佬題解: