無序容器unorder map使用自定義型別

2021-07-28 18:58:25 字數 949 閱讀 8627

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技術解決,就應該採用...