2010-02-18 52 views
2

我有一個好奇的問題,我腦力激盪可能的解決方案。問題是這樣的:我有很多輸入(高達幾千個不同的輸入),它們在二維陣列中基本不同(陣列大小不一,從一號到幾千號)。處理數組需要一些時間來初始化數據的函數,所以我想將函數/仿函數與數據一起緩存並將它們存儲在地圖中。C++,什麼是散列數組的好方法?

現在,我該如何將原始數組轉換爲可用的散列表類型?我最初認爲要將數組讀入一個字符串並將字符串用作關鍵字。這是個好主意嗎?你有更好的建議嗎?

+0

您是否需要查找特定的密鑰?我不確定在這裏使用哈希表是如何在這裏購買你的,如果你只是想在下一個數據集之後進行處理,這聽起來像。 – Joe 2010-02-18 02:14:11

+0

@Joe是的,我確實需要查找鍵。相同的數據使用相同的函數處理10次或更多次。 – Anycorn 2010-02-18 02:18:45

+0

但是,您如何知道*您需要再次處理哪些設置?你從描述中不能理解的是,你如何知道你的邏輯需要重新檢索哪個數據集? – Joe 2010-02-18 02:43:21

回答

2

這些數組是整數嗎?如果是的話,只是用的東西是這樣的

hash = (hash + (324723947 + a[i])) ^93485734985;

類似的事情會正常工作的字符串,如果你做的所有字符。 最後,您可能會退房extra libs here

+0

雙精度,所以技術上他們可以是整數。 – Anycorn 2010-02-18 02:16:39

+0

然後它會完美地工作。我仍然會把它們整理爲整數。 – BarsMonster 2010-02-18 02:17:32

+0

這個散列函數的衝突率是多少?我對此有點擔心 – Anycorn 2010-02-18 02:20:40

相關問題