c 11 hash雜湊結構模板

2021-07-27 04:20:51 字數 2848 閱讀 8968

c++11新增的雜湊結構模板定義於標頭檔案

templatestruct _bitwise_hash : public unary_function<_kty size_t>

;

雜湊結構模板定義乙個函式物件(過載了operator()),實現了雜湊函式:

1.接受乙個引數的型別key

2.返回乙個型別為size_t的值,表示該引數的雜湊值

3.呼叫時不會丟擲異常

4.若兩個引數k1k2相等,則hash()(k1) == hash()(k2)

5.若兩個不同的引數k1k2不相等,則hash()(k1) == hash()(k2)成立的概率應非常小,接近1.0/std::numeric_limits::max()

無序關聯容器unordered_set,unordered_multiset,unordered_mapunordered_multimap預設使用雜湊結構模板來為鍵計算雜湊值。

argument_type模板第乙個型別引數

result_typesize_t

預設建構函式

構造乙個雜湊函式物件

size_t operator()(t &t)計算t的雜湊值

在標頭檔案裡,例項化了內建型別的雜湊結構模板:

template

<> struct hash;

template

<> struct hash;

template

<> struct hash

char>;

template

<> struct hash

char>;

template

<> struct hash;

template

<> struct hash;

template

<> struct hash;

template

<> struct hash;

template

<> struct hash

short>;

template

<> struct hash;

template

<> struct hash

int>;

template

<> struct hash;

template

<> struct hash

long>;

template

<> struct hash

long>;

template

<> struct hash

long

long>;

template

<> struct hash;

template

<> struct hash;

template

<> struct hash

double>;

template

< class t > struct hash;

c++11例項化了字串的雜湊結構模板

std:

:hash:

:string>

std:

:hash:

:u16string>

std:

:hash:

:u32string>

std:

:hash:

:wstring>

c++11,std::error_code的雜湊支援

std:

:hash:

:error_code>

c++11例項化的其他雜湊結構模板

std:

:hash:

:bitset>

std:

:hash:

:unique_ptr>

std:

:hash:

:shared_ptr>

std:

:hash:

:type_index>

std:

:hash:

:vector>

std:

:hash:

:thread

::id>

ide:vs2013

#include 

#include //

#include

#include

using

std::hash;//

using

std::string;

using

std::cout;

//自定義型別

class s

;//自己封裝乙個雜湊函式物件的型別,內部使用了hash結構模板

class myhash

};//也可以用自定義類例項化乙個hash結構模板

template

<>

class hash < s >

};int main()

輸出:

如有錯誤,請各位看官不吝指正,: )

參考:

資料結構之雜湊(hash)表

最近看php陣列底層結構,用到了雜湊表,所以還是老老實實回去看結構,在這裡去總結一下。這裡先說一下雜湊 hash 表的定義 雜湊表是一種根據關鍵碼去尋找值的資料對映結構,該結構通過把關鍵碼對映的位置去尋找存放值的地方,說起來可能感覺有點複雜,我想我舉個例子你就會明白了,最典型的的例子就是字典,大家估...

Redis資料結構之雜湊hash

雜湊型別 hash 用於儲存鍵值對結構的資料,值只能是字串 hset 新增資料,返回1或0 hset key field value127.0.0.1 6379 hset user 1 name redis integer 1hmset 批量新增資料 hmset key field1 value1 ...

基本資料結構 Hash雜湊

這玩意一直都是個好東西,但是我總覺得玄學的一批。今天藉著專題學習的勁頭,把hash好好梳理一下。雜湊這東西應該都不陌生。將複雜的資訊對映到乙個容易維護的值域之內。那麼hash函式就有點類似於乙個對映關係。通過這個函式來產生乙個關鍵值 key 通過關鍵值與值 value 的對應關係,製作乙個對應表。即...