From 6ea915f62d7e8ce12c8dd9b6707f80822fbfd267 Mon Sep 17 00:00:00 2001 From: Tyge Løvset <60263450+tylov@users.noreply.github.com> Date: Sun, 12 Jul 2020 05:10:32 +0200 Subject: Update README.md --- README.md | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 1ebc3490..a4347b18 100644 --- a/README.md +++ b/README.md @@ -105,16 +105,19 @@ You may customize the destroy-, hash- and equals- function. It also supports a f ``` chash_si_put(&map, cstring_make("mykey"), 12); ``` -but the main problem is lookup: +and the main incovenience is on lookup: ``` CString lookup = cstring_make("mykey"); int x = chash_si_get(&map, lookup)->value; cstring_destroy(&lookup); ``` -The predefined shorthand macro *declare_CHash_string()* defines a CHash container with a CString as key, however this you may use it like: +To avoid this, use *declare_CHash_string()*: ``` +declare_CHash_string(si, MAP, int); +... +CHash_si map = chash_init; chash_si_put(&map, "mykey", 12); // constructs a CString key from the char* internally. -int x = chash_si_get(&map, "mykey")->value; // no allocation of string key happens here, which is good. +int x = chash_si_get(&map, "mykey")->value; // no allocation of string key happens here. ``` An alternative would be to use *char* * as key type, but you would have to manage the memory of the hash char* keys yourself. Note that this customization is also available for **CVector**, but only affects the *find()* function currently. See *declare_CVector_string()*. -- cgit v1.2.3