私はintのセットのためのハッシュを作成する必要があります。私は一種の知っているときに問題が、ある整数用のハッシュを設定しますか?
Outer loop - TableSize = 10 to 1000
Middle loop - k = 1 to 500
Inner loop - create a table, and set it to -1
Inner inner loop - step through 10 #s loc = f(num)
:私は彼らがこのように設定されていると私は間違いなく、4つのループを必要と知っている
f(x) = k * x % TableSize.
:私が使用する必要があるハッシュ関数はこれです外側と中間のループを設定する方法は、私は最後の2つのループについて立ち往生しています。
文字列に関しては、ハッシュテーブルを設定する方法は分かっていますが、(設定が少し違うと聞いたように)int型の方法はわかりません。また、要件に基づいて、私は内側のループでテーブルを作成するか、単に別の関数を呼び出すでしょうか?
これは私の.hファイルにあるすべてです。
#pragma once
#include <iostream>
#include <string>
using namespace std;
class intHash{
public:
intHash(int tableSize);
~intHash();
void someStuff(){
for (int TableSize = 10; TableSize < 1000; TableSize++){
for (int k = 1; k < 500; k++){
for(){
intHash(-1);
for(){
}
}
}
}
}
private:
string *hashTable;
};
私はすべての要件が何であるか疑問に思うでしょう - 特にどのように、衝突(リストエントリごとに、または使用中のためにテーブルまたはエントリごとに別々のブールにおけるセンチネル値を持つ固定テーブルサイズの新しいエントリにスキップ)が扱うん。これに応じて、ハッシングはかなり異なるでしょう。あなたは "文字列"への単一のポインタを持っているので、リストを使用していないと信じることになりますが、それは単なる推測です。また、その文字列は、おそらく整数、テンプレートパラメータ、または全体としてstd :: unordered_map全体の整数でなければなりません。 –