3

動的にサイズを大きくできる C の HashSet が必要です。もちろん、すべてを自分で書くこともできますが、そのための適切なライブラリがあるでしょうか? 私のキーは 32 ビット ハッシュであり、ポインター ( struct dirent *) を値として保存する必要があります。

4

3 に答える 3

3

更新: このライブラリを文字列に使用しないでください!
詳細については、このチケットを参照してください: https://github.com/avsej/hashset.c/issues/4

Couchbase の HashSet コードはいいようです。

https://github.com/avsej/hashset.c

例:

#include "hashset.h"

char *foo = "foo";
char *missing = "missing";
hashset_t set = hashset_create();

if (set == NULL) {
    fprintf(stderr, "failed to create hashset instance\n");
    abort();
}

hashset_add(set, foo);
assert(hashset_is_member(set, foo) == 1);
assert(hashset_is_member(set, missing) == 0);
于 2015-06-05T20:21:54.263 に答える
3

(いつものように) 素敵なGLib (GTK+ の一部) をお勧めします。GHashTableハッシュテーブルを実装するAPIがあります。必要に応じて動的に成長します。

32 ビット キーを使用するには、ハッシュ テーブルを作成するときにg_int_hash()および関数を参照します。g_int_equal()

于 2013-01-31T14:45:51.823 に答える