我一直在嘗試實現簡單的哈希方法,它與正整數完美協作,但它與負數崩潰。這裏的代碼:實現自定義哈希類,但它導致程序崩潰與負整數
void HashTable::insert(long long int key){
//hash function: h(k) = k mod (p)
long long int hash = key % tableSize;
while (hashTable[hash] != NULL){
// Change hash value to next position (+1)
hash = (hash + 1) % tableSize;
}
hashTable[hash] = key;
}
問題是,當結果爲負值時,mod的結果爲負值,並導致程序崩潰。它在我獲得它的絕對值時起作用,但是我不確定它是否是正確的方法。
有什麼建議嗎?
編輯:這裏是類:
class HashTable{
private:
long int tableSize;
long long int *hashTable;
public:
HashTable(long int);
void insert(long long int);
};
顯示已使用變量的聲明。 – Blacktempel
'boost :: unordered_map'。 – Puppy
@Blacktempel將該類添加到OP – Kronos