dense hash map的複雜key的用法

2022-03-11 00:52:32 字數 1670 閱讀 1955

比較了std::map和boost::unordered_map; 後者效能略勝前者。

準備使用dense_hash_map試試。

簡單的例子見

官方的例子有

#include #include using google::dense_hash_map;      // namespace where class lives by default

using std::cout;

using std::endl;

using ext::hash; // or __gnu_cxx::hash, or maybe tr1::hash, depending on your os

struct eqstr

};int main()

起初因為很好用,很簡單的例子嘛。但是我的專案裡面是一用一對string作為key的,換了一把不好使。

不知道這個dense_hash_map怎麼用了,暈菜。

to: [email protected]

subject: re: std::pairusage in google sparsehashreferences: from: craig silverstein date: fri, 11 sep 2009 14:38:13 -0700

in-reply-to: (shankar's message of "fri\, 11 sep 2009 14\:34\:31 -0700 \(pdt\)")

message-id: user-agent: gnus/5.11 (gnus v5.11) emacs/22.1 (gnu/linux)

mime-version: 1.0

content-type: text/plain; charset=us-ascii

x-system-of-record: true

} is there an alternative implementation which doesnot use std::pair?

sparsehashtable with not that much code, and replacepair<> with the

data structure of your choice. i don't think you'll need to modify

the sparsehashtable code at all.

直到我發現了除錯了一把,發現可以,於是我猜測單單實現乙個比較器不行,必須自己實現乙個pair的hash。於是搞定了。

inline unsigned int bkdrhash(const string& str, const string& str2)

hash = (hash * seed) + '\t';

for(std::size_t i = 0; i < str2.size(); i++)

return hash;

}struct pairkeyhash

};struct pairkeyeq

};int main()

搞定了,不過測試起來沒看出這個map有多快,哎,難道是我的hash演算法不行!

複雜的宣告

int a 整型變數 int a 整型指標變數 int a 整型指標的指標變數 int a 10 整型陣列 int a 10 整型指標陣列 int a 10 陣列指標變數 int a int 函式指標變數 int a 10 int 函式指標陣列 int fp1 int 10 fp1 函式指標變數,指...

複雜的光照

渲染路徑主要用於和光源打交道,shader編寫中需要為pass指定渲染路徑,這樣unity才會明白程式設計師想要使用的渲染路徑,然後將光源和處理後的光照資訊放到這些資料裡,程式設計師才能在著色器中進行訪問。大多數情況下,乙個專案只使用一種渲染路徑,因此我們可以為整個專案設定渲染時的渲染路徑。在uni...

mysql複雜查詢的書 mysql 複雜查詢

1.同乙個表下多次查詢 sql語句 select b.select name from exh common.medicine type a where b.p id a.id as p name from exh common.medicine type b 獲取表medicine type中所有...