我想將大約100個非負32位整數的列表壓縮爲一個整數。理想情況下,生成的整數總是唯一的,但少數幾個相對罕見的碰撞是可以接受的。 我該怎麼做?在C++中將整數表示爲單個整數
我正在寫一個解謎遊戲。我的搜索算法的一部分是避免重新探索已經看到的拼圖狀態。我將使用列表中生成的整數作爲statesAlreadySeen
表中的關鍵字。目前我使用字符串作爲鍵。但是,我從字符串鍵到map<,>
中的整數鍵時看到了顯着的性能改進,因此我想切換。
編輯:感謝無序的地圖建議!不過,我仍然對實際的哈希函數感到好奇。 IIRC有一個簡單的函數,涉及基本的位操作和xoring。很高興看到這一點,並對碰撞概率有一些總體的瞭解。
您需要使用[* hash函數*](http://en.wikipedia.org/wiki/Hash_function)。 – 2013-02-18 00:30:20
@OliCharlesworth崗位作爲回答,它不需要更詳細 – djechlin 2013-02-18 00:32:07
像'提振:: hash_range'應該傳達的基本思想...... – 2013-02-18 00:32:42