unorder_map使用hash函式和關鍵字型別的==運算子來組織元素,使用hash函式將元素對映到桶中,為了訪問乙個元素,容器首先計算元素的雜湊值,他指出應該搜尋那個桶。預設情況下,無序容器使用關鍵字型別的==運算子來比較元素,它還使用乙個hash型別的物件來生成每個元素的雜湊值。標準庫位內建型別提供了hash模板。包括string型別。但是我們不能直接定義關鍵型別為自定義型別的無序容器。因此我們需要自己定義該型別乙個雜湊函式。而且需要自己定義相等函式。
hash函式
struct hashfunc
};
相等函式
struct equalkey
};
#include#include#includeusing namespace std;
struct node
node(){}
bool operator==(const node&rhs) const };
struct hashfunc
};struct equalkey
};int main()
#include#include#includeusing namespace std;
struct hashfunc
return res;
}};struct equalkey
return true;
}};int main()
; vectorkey2 = ;
h[key1] = 3;
cout << h[key1] << endl;
cout << h[key2] << endl;
system("pause");
return 0;
}
STL無序容器
unordered map和unordered set的實現方式為雜湊函式,所以無序關聯容器不會根據key值對儲存的元素進行排序。include using namespace std typedef pair pss int main string s abc u map s 使用下標插入 u m...
STL 無序容器
新標準定義了 4個無序關聯容器。這些容器不是使用比較運算子來組織元素,而是使用乙個雜湊函式和關鍵字型別的 運算子。在元素沒有明顯的序關係的情況下,無序容器是非常有用的。include include using namespace std intmain for auto i unor map re...
11 4 無序容器
目錄共有四種無序容器 unorder set unorder map unorder multiset unorder multimap 有序容器用比較運算子組織元素 無序容器用hash函式和關鍵字型別的 組織元素 何時使用 如果關鍵字本身是無序的,且發現問題可以轉換為用hash技術解決,就應該採用...