青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

牽著老婆滿街逛

嚴(yán)以律己,寬以待人. 三思而后行.
GMail/GTalk: yanglinbo#google.com;
MSN/Email: tx7do#yahoo.com.cn;
QQ: 3 0 3 3 9 6 9 2 0 .

Google Sparse Hash

Google Sparsehash 包
實(shí)現(xiàn)背景:
該包由2種類型和HashTable實(shí)現(xiàn)組成。
Sparse 設(shè)計(jì)的實(shí)現(xiàn)過程中考慮的是空間優(yōu)先;dense 設(shè)計(jì)上考慮的是時間優(yōu)先。設(shè)計(jì)的注重點(diǎn)不一樣,所以實(shí)現(xiàn)也不一樣。為了和通用的STL相適應(yīng),每一種實(shí)現(xiàn)提供了hash-map和Hash-set2種封裝方式。



在使用Hash_map和Hash_set的過程中是不需要安裝STL庫的,google提供了整個的實(shí)現(xiàn)過程。Google在實(shí)現(xiàn)的過程中大量使用了模板和泛型編程。

實(shí)現(xiàn)特點(diǎn):
1。這個庫提供了內(nèi)存中Hash tables的一種實(shí)現(xiàn),同時提供了持久化存儲的能力。實(shí)現(xiàn)上盡可能快,可移植和小。 實(shí)現(xiàn)這些目標(biāo)使用了Knuth在<<計(jì)算機(jī)程序設(shè)計(jì)藝術(shù) 第三卷>>中提到的 內(nèi)部探測散列算法(具體Hash函數(shù)的實(shí)現(xiàn)可以參考http://burtleburtle.net/bob/hash/evahash 和 http://burtleburtle.net/bob/c/lookup2.c)。與開放鏈Hash算法不同,它不需要指向每個元素的指針項(xiàng),在實(shí)踐中仍然達(dá)到了常數(shù)級的查找時間。
2.為了節(jié)省空間,在插入Hash table的過程中,無論是Key還是data使用Union方式:如果Key或data很小,就直接存儲,否則就存取一個指針。
為了便于存取Key和data,可以使用2個宏 KEY_PTR和PTR_KEY在參數(shù)和指針實(shí)際所指的數(shù)據(jù)之間轉(zhuǎn)換比如:

     char key[] = "ab", *key2;
      HTItem *bck; HashTable *ht;
      HashInsert(ht, PTR_KEY(ht, key), 0);
      bck = HashFind(ht, PTR_KEY(ht, "ab"));
      key2 = KEY_PTR(ht, bck->key);

主要接口:
這個Hash table的實(shí)現(xiàn)支持的主要接口如下:


1. HashTable *AllocateHashTable(int cchKey, int fSaveKeys)

   功能:分配一個Hashtable的結(jié)構(gòu)并且返回它
參數(shù):    cchKey: 為正數(shù)時候,表明每個Key是固定長度的;為0表明Key是一個以\0結(jié)束的固定長度的字符串。
       fSaveKey: 通過是需要調(diào)用者分配Key的空間,如果設(shè)置為1,會Copy一個Key。

2.     ClearHashTable(HashTable *ht)
功能:移除 hashtable的所有元素;

3.   void FreeHashTable(HashTable *ht)
功能: 釋放 hashtable使用的內(nèi)存

4.    HTItem *HashFind(HashTable *ht, ulong key)
         功能:查詢Hashtable,找到返回該元素,否則為空;
5.     HTItem *HashFindLast(HashTable *ht)
     功能:返回最后查找過的的元素
6     HTItem *HashFindOrInsert(HashTable *ht, ulong key, ulong dataInsert)
           功能:查找指定的Key的元素,不在就插入。 

7.   HTItem *HashFindOrInsertItem(HashTable *ht, HTItem *pItem)
          功能:插入一個Key/data對,是否覆蓋已經(jīng)存在的元素由 SAMEKEY_OVERWRITE標(biāo)記設(shè)定。

9     HTItem *HashInsert(HashTable *ht, ulong key, ulong data)
             功能: -- 插入 key/data as an HTItem.
10    int HashDelete(HashTable *ht, ulong key)
          功能:   -- 移除一個制定Key的元素,成功返回1,否則不存在返回0
11     int HashDeleteLast(HashTable *ht)
       功能: -- 刪除最近查詢過的元素.

12     HTItem *HashFirstBucket(HashTable *ht)
             功能-- 用來遍歷hashtable的桶, 遍歷過程中不要做插入和刪除操作;
13    HTItem *HashNextBucket(HashTable *ht)
                  -- RETURNS NULL at the end of iterating.

14     int HashSetDeltaGoalSize(HashTable *ht, int delta)
                  功能:一次性批量插入數(shù)據(jù);

15    void HashSave(FILE *fp, HashTable *ht, int (*dataWrite)(FILE *, char *))
                 
          功能:將整個Hash表的內(nèi)容保存在文件中。如果數(shù)據(jù)域是一個指針或者復(fù)雜的數(shù)據(jù)結(jié)構(gòu),需要傳遞一個函數(shù)指針將文件指針作為參數(shù),此時可以寫入你想寫入的東西,函數(shù)返回寫入的字節(jié)數(shù)。如果數(shù)據(jù)域是整數(shù),不需要傳函數(shù)指針。
        
16    static HashTable *HashDoLoad(FILE *fp, char * (*dataRead)(FILE *, int),
        HashTable *ht)

          功能: --裝入Hash表. 他需要一個函數(shù)來讀取一個文件的結(jié)構(gòu)和結(jié)構(gòu)的大小。功能與 HashSave對應(yīng)。
17     HashTable *HashLoadKeys(FILE *fp, char * (*dataRead)(FILE *, int))
               功能:        -- 與 HashLoad(),不同 只有必要的時候才從磁盤Load相應(yīng)的數(shù)據(jù).這種方法可以節(jié)省內(nèi)存 。
注意:在裝入數(shù)據(jù)的時候不應(yīng)該插入和刪除數(shù)據(jù)。


功能擴(kuò)展:

這個HashTable實(shí)現(xiàn)沒有使用共享內(nèi)存的方式,我們可以對AllocateHashTable進(jìn)行簡單改寫使用共享內(nèi)存的方式;另外這個Hashtable沒有提供自動淘汰節(jié)點(diǎn)的功能,可以增加LRU,對訪問節(jié)點(diǎn)的計(jì)數(shù)和時間統(tǒng)計(jì),在無法繼續(xù)插入新的節(jié)點(diǎn)時候觸發(fā)淘汰操作。 

posted on 2010-10-04 06:58 楊粼波 閱讀(5377) 評論(1)  編輯 收藏 引用

評論

# re: Google Sparse Hash 2015-12-18 00:35 問問

在codeblocks里如何使用Google sparse hash 求指導(dǎo)  回復(fù)  更多評論   


只有注冊用戶登錄后才能發(fā)表評論。
網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲国产一区二区a毛片| 国产精品一卡| 亚洲人体1000| 亚洲激情自拍| 欧美顶级大胆免费视频| 亚洲精品久久久久| 一区二区av在线| 国产亚洲精品久久久久动| 久久先锋影音av| 欧美国产欧美亚洲国产日韩mv天天看完整 | 欧美亚洲在线播放| 久久久精品一区二区三区| 亚洲人久久久| 亚洲精品国产欧美| 99精品久久久| 国产一区二区三区高清在线观看| 男男成人高潮片免费网站| 欧美福利一区二区| 欧美一区午夜精品| 欧美成年人网站| 性欧美videos另类喷潮| 鲁鲁狠狠狠7777一区二区| 亚洲欧美成人精品| 久久综合99re88久久爱| 亚洲一区二区三区免费在线观看| 欧美在线一二三区| 亚洲男人的天堂在线观看 | 91久久精品美女高潮| 欧美日韩免费| 老司机精品视频一区二区三区| 欧美激情中文字幕乱码免费| 午夜精品999| 免费一级欧美在线大片| 久久国产高清| 欧美色综合天天久久综合精品| 乱码第一页成人| 国产精品久久久久aaaa樱花| 欧美激情按摩在线| 国内精品久久久久久久影视麻豆| 99精品国产一区二区青青牛奶 | 国产午夜精品理论片a级大结局| 亚洲国产精品www| 国产综合色在线| 中国成人黄色视屏| 日韩午夜电影在线观看| 久久男女视频| 久久久久看片| 国产农村妇女毛片精品久久麻豆 | 日韩亚洲在线观看| 亚洲精品一区中文| 老司机aⅴ在线精品导航| 久久精品在这里| 国产亚洲综合在线| 午夜精品久久久久久久99黑人| 亚洲午夜av| 欧美三级特黄| 在线综合+亚洲+欧美中文字幕| 日韩亚洲国产精品| 欧美大片免费观看在线观看网站推荐| 久久夜精品va视频免费观看| 国产亚洲一区二区三区在线观看| 亚洲免费视频观看| 亚洲在线观看免费| 欧美系列亚洲系列| 亚洲一级免费视频| 欧美在线观看www| 国产亚洲欧美日韩精品| 欧美一区二区视频在线| 久久久人成影片一区二区三区观看| 国产小视频国产精品| 久久精品一二三| 欧美激情五月| 正在播放欧美视频| 欧美日韩一区二区三区四区在线观看| 亚洲美女色禁图| 亚洲欧美国产毛片在线| 国产精品性做久久久久久| 午夜一级在线看亚洲| 蜜桃久久av一区| 亚洲青涩在线| 国产精品久久久久999| 亚洲欧美日韩国产中文在线| 久久男女视频| 久久国产精品色婷婷| 久久婷婷丁香| 亚洲免费激情| 国产三级精品在线不卡| 另类欧美日韩国产在线| 亚洲美女视频在线观看| 欧美一区二区三区四区在线 | 久久爱www| 欧美久久电影| 亚洲淫片在线视频| 91久久午夜| 欧美日韩三级在线| 99视频有精品| 久久亚洲国产精品一区二区| 欧美大成色www永久网站婷| 亚洲第一区在线观看| 亚洲一级黄色av| 在线电影院国产精品| 欧美日韩亚洲不卡| 久久―日本道色综合久久| 一区二区三区四区五区在线| 狼人天天伊人久久| 亚洲自拍偷拍一区| 91久久夜色精品国产九色| 国产精品亚洲不卡a| 欧美国产激情二区三区| 性色av一区二区三区红粉影视| 亚洲欧洲视频在线| 久久婷婷国产综合精品青草 | 国产精品区二区三区日本| 噜噜噜久久亚洲精品国产品小说| 中文日韩欧美| 亚洲国产欧美在线人成| 久久综合伊人77777麻豆| 亚洲男人的天堂在线观看| 亚洲美女免费精品视频在线观看| 国产在线高清精品| 国产精品私拍pans大尺度在线| 欧美国产视频在线观看| 久久精品理论片| 欧美在线观看视频| 亚洲男女自偷自拍| 亚洲一区二区三区高清| 日韩午夜免费视频| 亚洲国产精品电影| 欧美成人国产| 久久露脸国产精品| 久久精品视频免费播放| 新狼窝色av性久久久久久| 亚洲小说春色综合另类电影| 亚洲精品社区| 日韩系列欧美系列| av不卡在线观看| 亚洲网站在线观看| 亚洲无毛电影| 午夜精品福利视频| 亚洲欧美日韩高清| 性欧美超级视频| 欧美中文字幕不卡| 久久久久久色| 老**午夜毛片一区二区三区| 蜜臀a∨国产成人精品| 久久久亚洲国产天美传媒修理工| 久久久精品tv| 麻豆精品一区二区av白丝在线| 麻豆乱码国产一区二区三区| 欧美风情在线| 亚洲精品网站在线播放gif| 99人久久精品视频最新地址| 在线视频亚洲| 欧美一区二区三区四区视频| 久久九九精品99国产精品| 欧美激情一区二区三区不卡| 一区二区三区高清| 日韩视频免费观看| 亚洲午夜视频在线观看| 午夜久久久久| 美女精品国产| 欧美日韩高清在线观看| 欧美午夜在线一二页| 国产视频在线观看一区二区| 在线观看日韩精品| 亚洲一二三区视频在线观看| 欧美在线视频一区二区| 麻豆久久婷婷| 在线综合视频| 久久在线91| 国产精品草草| 亚洲国产第一| 亚洲欧美日韩精品久久| 欧美大片专区| 亚洲一区二区三区四区中文| 久久琪琪电影院| 国产精品电影网站| 136国产福利精品导航| 亚洲一区二区三区在线看| 老牛国产精品一区的观看方式| 亚洲精品婷婷| 久久男人资源视频| 国产精品免费小视频| 亚洲人成小说网站色在线| 午夜久久美女| 亚洲激情视频在线| 久久久久.com| 国产美女精品视频免费观看| 亚洲精品系列| 久久影音先锋| 亚洲综合三区| 欧美视频中文字幕在线| 亚洲国产成人午夜在线一区| 久久精品一区四区| 亚洲网站在线播放| 欧美日韩久久久久久| 亚洲欧洲精品一区二区三区不卡| 久久精品一区二区三区中文字幕 | 亚洲小说欧美另类婷婷| 欧美电影在线观看|