這是用C++編寫的。我需要爲每一對數字保留一個計數。這兩個數字的類型是「int」。我排序這兩個數字,所以(n1 n2)對與(n2 n1)對相同。我使用std :: unordered_map作爲容器。我一直在用pairing function by Matthew Szudzik, Wolfram Research, Inc.。在我的實現中,函數給了我一個類型爲「long」的唯一數字(在我的機器上是64位),用於每對「int」類型的兩個數字。我用這個long作爲unordered_map(std :: unordered_map)的關鍵字。有沒有更好的方法來保持這些對的計數?我的意思是,更快,如果可能的話使用更少的內存。是否有更好的實現來保持唯一整數對的計數?
此外,我不需要所有的長。即使您可以假設這兩個數字的範圍可以達到32位的最大值,但我預計配對函數的最大可能值最多需要36位。如果沒有別的,至少有沒有辦法將36位作爲unordered_map的關鍵字? (某些其他數據類型)
我想過使用bitset,但我不確定std :: hash是否會爲任何給定的36位位集生成一個唯一的鍵,這可以用作unordered_map的鍵。
我將不勝感激任何想法,建議等
每對長度爲2的「std :: set」如何?這樣的順序並不重要。 – CoryKramer 2014-10-06 18:21:22
那麼輸入是無符號的? – IdeaHat 2014-10-06 18:24:40
好的,並使用set作爲unordered_map的關鍵字? – learningToCode 2014-10-06 18:24:56