+
+ table = hash_table_create(str_hash, str_equal);
+ char *names[] = { "Adam", "Eva", "Abraham", "Kain", "Abel", NULL };
+ for (int i = 0; names[i]; i++) {
+ void* name = names[i];
+ hash_table_insert(table, name, strdup(name));
+ }
+ hash_table_iter_init(&iter, table);
+ while (hash_table_iter_next(&iter, &key, &value)) {
+ printf("Key: %p value: %s\n", (char*)key, (char*)value);
+ }
+ data = hash_table_delete(table, (void*) names[4]);
+ printf("Deleted: [%p] %s\n", data, (char*) data);
+ free(data);
+ hash_table_replace(table, (void*) names[4], strdup(names[4]));
+ hash_table_replace(table, (void*) names[4], strdup("Johannes"));
+ hash_table_iter_init(&iter, table);
+ while (hash_table_iter_next(&iter, &key, &value)) {
+ printf("Key: %p value: %s\n", (char*)key, (char*)value);
+ }
+
+ hash_table_destroy(table);