2011-10-27 12 views
0

クラスの場合、バインディングの数が特定の値(509,1021,2039,4093など)に達したときに展開する動的に拡張するハッシュテーブルを作成する必要があります。他のすべてについてはわかりますが、どのようにチェックするかはわかりませんテーブルは次に展開する必要があります。Cの次の列挙値を取得しますか?

私たちは列挙型を使用すると思われますが、「次の」列挙値を取得する方法はわかりません。つまり、私のハッシュテーブルが現在1022のバインディングを持っていれば、基本的な配列を2039サイズに拡張する必要がありますが、どうやってそれを行うのか分かりますか?または私はこれに間違った方法で近づいていますか?事前に申し訳

これは愚かな質問ですが、それは私の本で取り上げていないと、それはC.

に来るとき、私はまだ非常に新しいんだ場合はC.で、この目的のために列挙を使用することはできません
+1

私は列挙型はここに行くための方法であるとは思いません。列挙型を反復処理することも、インデックス化することもできません。 –

+0

よかった、ありがとう。私は/そこに/それをする方法があると期待していました...可能なサイズの配列よりもエレガントなものがありますか?私はそれと一緒に行くだろうと思う。 – bee

+0

509,1021,4093はすべて2の累乗よりも3少ないだけです(2039は2045ではないと確信していますか?)あなたはそれらを計算できます。 – jamesdlin

答えて

1

あなたはおそらく、現在のしきい値を指すように一定の配列内のしきい値を入れて、インデックスを維持したい

const int thresholds[] = { 509, 1021, 2039, 4093 }; 

int i_thresh = 0; 

... 

if (num_elements > thresholds[i_thresh]) 
{ 
    i_thresh++; 
} 
+0

私はそれと一緒に行くと思います。ご協力いただきありがとうございます! – bee

関連する問題