diff --git a/README.md b/README.md index c61403e..4b164c2 100644 --- a/README.md +++ b/README.md @@ -42,27 +42,36 @@ uint64_t user_hash(const void *item, uint64_t seed0, uint64_t seed1) { int main() { // create a new hash map where each item is a `struct user`. The second - // argument is the initial capacity. The third and fourth arguments are + // argument is the initial capacity. The third and fourth arguments are // optional seeds that are passed to the following hash function. - struct hashmap *map = hashmap_new(sizeof(struct user), 0, 0, 0, + struct hashmap *map = hashmap_new(sizeof(struct user), 0, 0, 0, user_hash, user_compare, NULL, NULL); // Here we'll load some users into the hash map. Each set operation // performs a copy of the data that is pointed to in the second argument. - hashmap_set(map, &(struct user){ .name="Dale", .age=44 }); - hashmap_set(map, &(struct user){ .name="Roger", .age=68 }); - hashmap_set(map, &(struct user){ .name="Jane", .age=47 }); + const struct user dale = { .name="Dale", .age=44 }; + const struct user roger = { .name="Roger", .age=68 }; + const struct user jane = { .name="Jane", .age=47 }; + const struct user russ = { .name="Russell", .age=40 }; + + hashmap_set(map, &dale); + hashmap_set(map, &roger); + hashmap_set(map, &jane); + hashmap_set_by_hash(map, &russ, &russ); + + struct user *user; - struct user *user; - printf("\n-- get some users --\n"); - user = hashmap_get(map, &(struct user){ .name="Jane" }); + user = hashmap_get(map, &jane); + printf("%s age=%d\n", user->name, user->age); + + user = hashmap_get(map, &roger); printf("%s age=%d\n", user->name, user->age); - user = hashmap_get(map, &(struct user){ .name="Roger" }); + user = hashmap_get(map, &dale); printf("%s age=%d\n", user->name, user->age); - user = hashmap_get(map, &(struct user){ .name="Dale" }); + user = hashmap_get_by_hash(map, &russ); printf("%s age=%d\n", user->name, user->age); user = hashmap_get(map, &(struct user){ .name="Tom" }); @@ -83,22 +92,25 @@ int main() { } // output: +// // -- get some users -- // Jane age=47 // Roger age=68 // Dale age=44 +// Russell age=40 // not exists -// +// // -- iterate over all users (hashmap_scan) -- // Dale (age=44) // Roger (age=68) // Jane (age=47) +// Russell (age=40) // // -- iterate over all users (hashmap_iter) -- // Dale (age=44) // Roger (age=68) // Jane (age=47) - +// Russell (age=40) ``` ## Functions