hash-map-tests.c (test_map_of_strings_to_int): Show how to use string contents as hash_map keys.
* hash-map-tests.c (test_map_of_strings_to_int): Show how to use string contents as hash_map keys. From-SVN: r268121
This commit is contained in:
parent
9011fa06de
commit
3b1f091c4b
@ -1,3 +1,8 @@
|
||||
2019-01-21 Michael Ploujnikov <michael.ploujnikov@oracle.com>
|
||||
|
||||
* hash-map-tests.c (test_map_of_strings_to_int): Show how to use
|
||||
string contents as hash_map keys.
|
||||
|
||||
2019-01-21 Bernd Edlinger <bernd.edlinger@hotmail.de>
|
||||
|
||||
PR c/88928
|
||||
|
@ -77,6 +77,26 @@ test_map_of_strings_to_int ()
|
||||
m.remove (eric);
|
||||
ASSERT_EQ (5, m.elements ());
|
||||
ASSERT_EQ (NULL, m.get (eric));
|
||||
|
||||
/* A plain char * key is hashed based on its value (address), rather
|
||||
than the string it points to. */
|
||||
char *another_ant = static_cast <char *> (xcalloc (4, 1));
|
||||
another_ant[0] = 'a';
|
||||
another_ant[1] = 'n';
|
||||
another_ant[2] = 't';
|
||||
another_ant[3] = 0;
|
||||
ASSERT_NE (ant, another_ant);
|
||||
unsigned prev_size = m.elements ();
|
||||
ASSERT_EQ (false, m.put (another_ant, 7));
|
||||
ASSERT_EQ (prev_size + 1, m.elements ());
|
||||
|
||||
/* Need to use string_hash or nofree_string_hash key types to hash
|
||||
based on the string contents. */
|
||||
hash_map <nofree_string_hash, int> string_map;
|
||||
ASSERT_EQ (false, string_map.put (ant, 1));
|
||||
ASSERT_EQ (1, string_map.elements ());
|
||||
ASSERT_EQ (true, string_map.put (another_ant, 5));
|
||||
ASSERT_EQ (1, string_map.elements ());
|
||||
}
|
||||
|
||||
/* Run all of the selftests within this file. */
|
||||
|
Loading…
x
Reference in New Issue
Block a user